aufdroeseln($this->suppress('sent')); $this->generateEmailMessage(); mail($this->email['adresses'],$this->email['subject'],$this->email['message'],"From: {$this->email['from']['name']} <{$this->email['from']['email']}>\nReply-To: {$this->email['from']['email']}\nX-Mailer: PHP/" . phpversion()); } // 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); } } // 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'; echo ''; $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 ''; } // 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': case 'text': 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 ""; break; case 'password': echo ""; break; case 'textarea': echo ""; break; case 'select': echo ""; break; case 'checkbox': $formularbezeichner = preg_split('[\[|\]]',$attribute['name']); if ($sent) { if ($_POST["{$formularbezeichner[0]}"]["{$formularbezeichner[1]}"] == $attribute['value']) { echo ""; } else { echo ""; } } else { if (!empty($attribute['selected']) && $attribute['selected'] == 'true') { echo ""; } else { echo ""; } } break; case 'radio': if (!empty($_POST["{$attribute['name']}"])) { if ($_POST["{$attribute['name']}"] == $attribute['value']) { echo ""; } else { echo ""; } } else { if (!empty($attribute['selected']) && $attribute['selected'] == 'true') { echo ""; } else { echo ""; } } 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-z-]*$",$_POST["{$feld['name']}"])) return false; if (!empty($feld['valid']) && $feld['valid'] == 'text' && !eregi("^[ .,;!?()öäüéàèâêîça-z-]*$",$_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; // 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 "

Formularkonfiguration

"; echo "

Hier ist das Formular sowie der Text einzugeben, der zusammen mit dem Formular ausgegeben werden soll:

"; echo "CMS_HTML[0]"; echo "

Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich prozessiert worden ist:

"; 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(); } ?>