Kontakt Formular URL angabe
Verfasst: Mo 16. Feb 2009, 11:27
Hallo gibt es eine Möglichkeit mit dem Kontaktformular die Informationen mitzuschicken von wo aus der Besucher kommt?
Das Diskussionsforum zum Open Source Content Management System
https://forum.contenido.org/
Code: Alles auswählen
$refer=$_SERVER["HTTP_REFERER"];
Code: Alles auswählen
$refer=$_SERVER["HTTP_REFERER"];
Code: Alles auswählen
if (is_array($_POST)) {
foreach ($_POST as $key => $value) {
if ($key != 'send') {
$mail_body .= "<tr><td>$key</td><td>$value</td></tr>";
}
}
}
Code: Alles auswählen
if (is_array($_POST)) {
foreach ($_POST as $key => $value) {
if ($key != 'send') {
$mail_body .= "<tr><td>$key</td><td>$value</td></tr>";
}
}
$mail_body .= "<tr><td>Herkunft</td><td>".$_SERVER["HTTP_REFERER"]."</td></tr>";
}
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : w3concepts.form.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 20-08-2004
* Modified : 22-10-2004 by Ingo van Peeren (www.van-peeren.de)
************************************************/
//Integration der phpmailer-Klasse
include ("../contenido/classes/class.phpmailer.php");
class w3form {
var $email, $aufgedroeselt, $form, $formularFeld;
function w3form() {
}
// Umgestellt auf phpmailer und evtl. Aufruf der vCard-Erstellung und Anhang
// PRIVATE
function sendEmail() {
$this->aufdroeseln($this->suppress('sent', 'sent', 'vcard'));
$this->generateEmailMessage();
if (!$_POST['vcard']) {
$mail = new phpmailer();
$mail->AddAddress($this->email['adresses']);
$mail->From = $this->email['from']['email'];
$mail->FromName = $this->email['from']['name'];
$mail->Subject = $this->email['subject'];
$mail->Body = $this->email['message'];
if(!$mail->Send()){
$notsend .= $lngNews["mailcouldnotbesend1"].$to.$lngNews["mailcouldnotbesend2"] . "<br>";
}
}
else {
$datei_content = $this->generateVcard();
$mail = new phpmailer();
$mail->AddAddress($this->email['adresses']);
$mail->From = $this->email['from']['email'];
$mail->FromName = $this->email['from']['name'];
$mail->Subject = $this->email['subject'];
$mail->Body = $this->email['message'];
$mail->AddStringAttachment($datei_content,"Kontakt.vcf","base64","text/x-vcard");
if(!$mail->Send()){
$notsend .= $lngNews["mailcouldnotbesend1"].$to.$lngNews["mailcouldnotbesend2"] . "<br>";
}
//echo $notsend;
}
}
// PRIVATE
function aufdroeseln($aufzudroeseln,$prefix = '') {
foreach ($aufzudroeseln as $key => $value) {
if (is_array($value)) {
$this->aufdroeseln($value,$key." ");
} else {
$this->aufgedroeselt["{$prefix}{$key}"] = $value;
}
}
}
// PRIVATE
function add2Message($key,$value) {
if (strlen($key) > 25 OR strlen($value) > 54) {
$this->email['message'] .= "$key\n$value\n";
} else {
$this->email['message'] .= $key;
$this->email['message'] .= str_repeat(' ',25-strlen($key));
$this->email['message'] .= "$value\n";
}
}
// PRIVATE
function generateEmailMessage() {
if ($this->aufgedroeselt) foreach ($this->aufgedroeselt as $key => $value) {
$this->add2Message($key,$value);
}
}
// Erstellt eine vCard
// PRIVATE
function generateVcard() {
if ($this->aufgedroeselt) foreach ($this->aufgedroeselt as $key => $value) {
if ($key == $_POST['vcard']['nachname']) $vcard_nachname = $value;
elseif ($key == $_POST['vcard']['anrede']) $vcard_anrede = $value;
elseif ($key == $_POST['vcard']['vorname']) $vcard_vorname = $value;
elseif ($key == $_POST['vcard']['organisation']) $vcard_organisation = $value;
elseif ($key == $_POST['vcard']['titel']) $vcard_titel = $value;
elseif ($key == $_POST['vcard']['telefon']) $vcard_telefon = $value;
elseif ($key == $_POST['vcard']['fax']) $vcard_fax = $value;
elseif ($key == $_POST['vcard']['strasse']) $vcard_strasse = $value;
elseif ($key == $_POST['vcard']['plz']) $vcard_plz = $value;
elseif ($key == $_POST['vcard']['ort']) $vcard_ort = $value;
elseif ($key == $_POST['vcard']['email']) $vcard_email = $value;
else $vcard_notizen .= $key . " " . $value . "=0D=0A";
}
$vcard = "BEGIN:VCARD
VERSION:2.1
N:";
if ($vcard_vorname) $vcard .= $nachname . ';' . $vcard_vorname . '
FN:' . $vcard_vorname . ' ' . $vcard_name . '
';
else $vcard .= $vcard_nachname . '
FN:' . $vcard_name . '
';
if ($vcard_organisation) $vcard .= 'ORG:' . $vcard_organisation . '
';
if ($vcard_notizen) {
$vcard_notizen = str_replace ("\r\n", "=0D=0A", $vcard_notizen);
$vcard_notizen = str_replace ("\n", "=0D=0A", $vcard_notizen);
}
if ($vcard_notizen) $vcard .= "NOTE;ENCODING=QUOTED-PRINTABLE:" . $vcard_notizen. "=0D=0A
";
if ($vcard_telefon) $vcard .= "TEL;WORK;VOICE:" . $vcard_telefon. "
";
if ($vcard_fax) $vcard .= "TEL;WORK;FAX:" . $vcard_fax. "
";
$vcard .= "ADR;HOME:;;". $vcard_strasse . ";" . $vcard_ort . ";;" . $vcard_plz . ";
";
if ($vcard_email) $vcard .= "EMAIL;PREF;INTERNET:". $vcard_email . "
";
$vcard .= "REV:" . date("Ymd") . "T" . date("H:i:s") ."Z
END:VCARD";
return $vcard;
}
// PRIVATE
function suppress() {
$suppress = func_get_args();
foreach ($_POST as $key => $value) {
if (array_search($key,$suppress) == false) $fields[$key] = $value;
}
return $fields;
}
// PUBLIC
function addEmailAdress($email) {
if (empty($this->emailAdresses)) {
$this->email['adresses'] .= "$email";
} else {
$this->email['adresses'] .= ", $email";
}
}
// PUBLIC
function setEmailSubject($subject) {
$this->email['subject'] = $subject;
}
// PUBLIC
function setEmailFrom($email,$name) {
$this->email['from']['email'] = $email;
$this->email['from']['name'] = $name;
}
// PUBLIC
function setForm($form) {
$this->form['form'] = $form;
}
// PUBLIC
function setAnswer($answer) {
$this->form['answer'] = $answer;
}
// PUBLIC
function setBackgroundError($color) {
$this->form['colorError'] = $color;
}
// PRIVATE
function formularInterpretation(&$formular) {
$felder = split('###',$formular);
for ($i=1;$i<count($felder);$i=$i+2) {
$attributte = split(';',trim($felder[$i]));
foreach ($attributte as $attribut) {
$namewert = split(':',trim($attribut));
if ($namewert[0] != 'option' && $namewert[0] != 'optionvalue') {
$feld["{$felder[$i]}"]["{$namewert[0]}"] = $namewert[1];
} else {
$feld["{$felder[$i]}"]["{$namewert[0]}"][] = $namewert[1];
}
}
}
return $feld;
}
// PRIVATE
function formularAusgabe($sent = false) {
if ($sent) echo "<p><strong>Eine oder mehrere Eingaben von Ihnen fehlen oder sind nicht korrekt. Bitte überprüfen Sie die rot hinterlegten Felder!</strong></p>";
echo '<form action="" method="POST">';
echo '<input type="hidden" name="sent" value="true">';
$formular = $this->form['form'];
$formulardaten = $this->formularInterpretation(&$formular);
$formular = split('###',$formular);
foreach ($formular as $formularteil) {
if (!empty($formulardaten["{$formularteil}"])) {
$this->formularFeld($formulardaten["{$formularteil}"],$sent);
} else {
echo $formularteil;
}
}
echo '</form>';
}
// PRIVATE
function formularFeld($attribute,$sent) {
$parameter = "name=\"{$attribute['name']}\"";
if ($sent && !$this->formularFeldKorrekt(&$attribute)) $style ="style=\"background-color:{$this->form['colorError']};\"";
switch ($attribute['type']) {
case 'select':
case 'password':
if (!empty($attribute['size'])) $parameter .= " size=\"{$attribute['size']}\"";
break;
}
switch ($attribute['type']) {
case 'textarea':
case 'text':
if (!empty($attribute['size'])) $parameter .= " size=\"{$attribute['size']}\"";
if (!empty($attribute['value'])) $value = $attribute['value'];
if (!empty($_POST["{$attribute['name']}"])) $value = $_POST["{$attribute['name']}"];
break;
}
switch ($attribute['type']) {
case 'text':
echo "<input type=\"text\" $parameter value=\"$value\" $style>";
break;
case 'password':
echo "<input type=\"password\" $parameter value=\"$value\" $style>";
break;
case 'textarea':
echo "<textarea name=\"{$attribute['name']}\" cols=\"";
echo (empty($attribute['cols']))?('20'):($attribute['cols']);
echo "\" rows=\"";
echo (empty($attribute['rows']))?('2'):($attribute['rows']);
echo "\" style=\"white-space: pre;\" $style>$value</textarea>";
break;
case 'select':
echo "<select $parameter $style>";
for ($i=0;$i<count($attribute['option']);$i++) {
if (!empty($attribute['optionvalue'][$i])) {
if (!empty($_POST["{$attribute['name']}"]) && $_POST["{$attribute['name']}"] == $attribute['optionvalue'][$i]) {
echo "<option value=\"{$attribute['optionvalue'][$i]}\" selected=\"selected\">{$attribute['option'][$i]}</option>\n";
} else {
if (empty($_POST["{$attribute['name']}"]) && !empty($attribute['optionvalue'][$i]) && $attribute['optionvalue'][$i] == $attribute['value']) {
echo "<option value=\"{$attribute['optionvalue'][$i]}\" selected=\"selected\">{$attribute['option'][$i]}</option>\n";
} else {
echo "<option value=\"{$attribute['optionvalue'][$i]}\">{$attribute['option'][$i]}</option>\n";
}
}
} else {
if (!empty($_POST["{$attribute['name']}"]) && $_POST["{$attribute['name']}"] == $attribute['option'][$i]) {
echo "<option selected=\"selected\">{$attribute['option'][$i]}</option>\n";
} else {
if (empty($_POST["{$attribute['name']}"]) && $attribute['option'][$i] == $attribute['value']) {
echo "<option selected=\"selected\">{$attribute['option'][$i]}</option>\n";
} else {
echo "<option>{$attribute['option'][$i]}</option>\n";
}
}
}
}
echo "</select>";
break;
case 'checkbox':
$formularbezeichner = preg_split('[\[|\]]',$attribute['name']);
if ($sent) {
if ($_POST["{$formularbezeichner[0]}"]["{$formularbezeichner[1]}"] == $attribute['value']) {
echo "<input class=check type=\"checkbox\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input class=check type=\"checkbox\" $parameter value=\"{$attribute['value']}\"/>";
}
} else {
if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
echo "<input class=check type=\"checkbox\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input class=check type=\"checkbox\" $parameter value=\"{$attribute['value']}\"/>";
}
}
break;
case 'radio':
if (!empty($_POST["{$attribute['name']}"])) {
if ($_POST["{$attribute['name']}"] == $attribute['value']) {
echo "<input class=radio type=\"radio\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input class=radio type=\"radio\" $parameter value=\"{$attribute['value']}\" />";
}
} else {
if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
echo "<input class=radio type=\"radio\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input class=radio type=\"radio\" $parameter value=\"{$attribute['value']}\"/>";
}
}
break;
}
// Einfügen von versteckten Inputfeldern zur Übergabe der vCard-Felder
$vc = "CMS_VALUE[5]";
if ($vc) {
switch ($attribute['vcard']) {
case 'name':
echo "<input type=\"hidden\" name=\"vcard[name]\" value=\"".$attribute['name']."\">";
break;
case 'vorname':
echo "<input type=\"hidden\" name=\"vcard[vorname]\" value=\"".$attribute['name']."\">";
break;
case 'organisation':
echo "<input type=\"hidden\" name=\"vcard[organisation]\" value=\"".$attribute['name']."\">";
break;
case 'titel':
echo "<input type=\"hidden\" name=\"vcard[titel]\" value=\"".$attribute['name']."\">";
break;
case 'telefon':
echo "<input type=\"hidden\" name=\"vcard[telefon]\" value=\"".$attribute['name']."\">";
break;
case 'fax':
echo "<input type=\"hidden\" name=\"vcard[fax]\" value=\"".$attribute['name']."\">";
break;
case 'strasse':
echo "<input type=\"hidden\" name=\"vcard[strasse]\" value=\"".$attribute['name']."\">";
break;
case 'plz':
echo "<input type=\"hidden\" name=\"vcard[plz]\" value=\"".$attribute['name']."\">";
break;
case 'ort':
echo "<input type=\"hidden\" name=\"vcard[ort]\" value=\"".$attribute['name']."\">";
break;
case 'email':
echo "<input type=\"hidden\" name=\"vcard[email]\" value=\"".$attribute['name']."\">";
break;
}
}
}
// PRIVATE
function formularVollstaendig() {
$formular = $this->form['form'];
$felder = $this->formularInterpretation(&$formular);
foreach ($felder as $feld) {
if (!$this->formularFeldKorrekt(&$feld)) return false;
}
return true;
}
// PRIVATE
function success() {
$this->sendEmail();
echo $this->form['answer'];
}
// PRIVATE
function formularFeldKorrekt(&$feld) {
// prüfung, ob pflichtfeld vorhanden
if (!empty($feld['mandatory']) && $feld['mandatory'] == 'true' && empty($_POST["{$feld['name']}"])) return false;
// wenn das formularfeld kein pflichtfeld und nicht vorhanden ist, true zurück geben
if (empty($_POST["{$feld['name']}"])) return true;
// regular expression prüfungen
if (!empty($feld['valid']) && $feld['valid'] == 'simpletext' && !eregi("^[öäüéàèâêîç_a-z0-9-]*$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'text' && !eregi("^[ .,;!?ß/()+öäüéàèâêîça-z0-9-]*$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'integer' && !eregi("^[0-9]*$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'float' && !eregi("^[0-9]*[.]{0,1}[0-9]*$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'date' && !eregi("^[0-9]{1,2}.[0-9]{1,2}.[0-9]{2}$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'email' && !eregi("^[öäüéàèâêîç_a-z0-9-]+(\.[öäüéàèâêîç_a-z0-9-]+)*@[öäüéàèâêîça-z0-9-]+(\.[öäüéàèâêîça-z0-9-]+)*$",$_POST["{$feld['name']}"])) return false;
if (!empty($feld['valid']) && $feld['valid'] == 'textmitumbruch' && !eregi("^[ \n\r.,;!?ß()öäüéàèâêîça-z0-9-]*$",$_POST["{$feld['name']}"])) return false;
// Test auf Telefonnummern - Validierungstyp "phone"
if (!empty($feld['valid']) && $feld['valid'] == 'phone' && !eregi("^([+][ ]?[1-9][0-9][ ]?[-]?[ ]?|[(]?[0][ ]?)[0-9]{2,4}[-)/ ]?[ ]?[1-9][-0-9 ]{3,16}$",$_POST["{$feld['name']}"])) return false;
// grössenbereich bei integer und float prüfen
if (!empty($feld['minvalue']) && $_POST["{$feld['name']}"] < $feld['minvalue']) return false;
if (!empty($feld['maxvalue']) && $_POST["{$feld['name']}"] > $feld['maxvalue']) return false;
// längenbereich bei allen typen prüfen
if (!empty($feld['minlength']) && strlen($_POST["{$feld['name']}"]) < $feld['minlength']) return false;
if (!empty($feld['maxlength']) && strlen($_POST["{$feld['name']}"]) > $feld['maxlength']) return false;
return true;
}
//PUBLIC
function process() {
if (!isset($_POST['sent'])) {
$this->formularAusgabe();
} elseif ($this->formularVollstaendig()) {
$this->success();
} else {
$this->formularAusgabe(true);
}
}
}
if ($edit) {
echo "<h1>Formularkonfiguration</h1>";
echo "<p>Hier ist das Formular sowie der Text einzugeben, der zusammen mit dem Formular ausgegeben werden soll:</p>";
echo "CMS_HTML[0]";
echo "<p>Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich prozessiert worden ist:</p>";
echo "CMS_HTML[1]";
} else {
$formular = new w3form();
$formular->addEmailAdress("CMS_VALUE[0]");
$formular->setEmailSubject("CMS_VALUE[1]");
$formular->setEmailFrom("CMS_VALUE[2]","CMS_VALUE[3]");
$formular->setBackgroundError("CMS_VALUE[4]");
$formular->setForm("CMS_HTML[0]");
$formular->setAnswer("CMS_HTML[1]");
$formular->process();
}
?>
Code: Alles auswählen
// PRIVATE
function generateEmailMessage() {
if ($this->aufgedroeselt) foreach ($this->aufgedroeselt as $key => $value) {
$this->add2Message($key,$value);
}
}
Code: Alles auswählen
// PRIVATE
function generateEmailMessage() {
if ($this->aufgedroeselt) foreach ($this->aufgedroeselt as $key => $value) {
$this->add2Message($key,$value);
}
$key = "Referrer";
$this->add2Message($key,$_SERVER["HTTP_REFERER"]);
}
Vielleicht sollte die Tochterfirma etwas bieten... oder die Mutterfirma...Doch genau darum geht es. Unsere Tochterfirma hat einen direkt link auf unser Kontaktformular. Jetzt möchte man hier wissen wieviel Leute von deren Seite auf unsere kommen.