ähm, ist zwar ein bisschen spät. ich hab mal sowas gebastelt. probier doch mal das hier:
1. du brauchst ein formular
Code: Alles auswählen
<span class="Normal">
<table style="" border="0" cellpadding="1" width="100%">
<tbody>
<tr>
<td><span class="Normal">Firma:</span></td>
<td></td>
<td>###name:Firma; type:text; valid:text; size:50;mandatory:false###</td></tr>
<tr>
<td><span class="Normal">Anrede:</span></td>
<td></td>
<td>###name:Anrede; type:select; valid:text; size:1; option:bitte auswählen; option:Herr; option:Frau; value:bitte Auswählen###</td></tr>
<tr>
<td><span class="Normal">Name:*</span></td>
<td></td>
<td>###name:Name; type:text; valid:text; size:50; mandatory:true###</td></tr>
<tr>
<td><span class="Normal">Straße, Nr.:*</span></td>
<td></td>
<td>###name:Strasse; type:text; valid:text; size:40; mandatory:true###
###name:Nr; type:text; valid:integer; size:5; mandatory:true###</td></tr>
<tr>
<td><span class="Normal">PLZ, Ort:*</span></td>
<td></td>
<td>###name:PLZ; type:text; valid:integer; size:5; mandatory:true### ###name:Ort; type:text; valid:text; size:40; mandatory:true###</td></tr>
<tr>
<td><span class="Normal">Land:</span></td>
<td></td>
<td>###name:Land; type:text; valid:text; size:50;mandatory:false###</td></tr>
<tr>
<td><span class="Normal">Telefon:*</span></td>
<td></td>
<td>###name:Telefon; type:text; valid:string; size:50; mandatory:true###</td></tr>
<tr>
<td><span class="Normal">E-Mail:*</span></td>
<td></td>
<td>###name:E-Mail; type:text; valid:email; size:50; mandatory:true###</td></tr>
<tr>
<td><span class="Normal">Datei anhängen:</span></td>
<td></td>
<td><input name="userfile" type="file"> </td></tr>
<tr>
<td><span class="Normal">Mit der Bitte um:</span></td>
<td></td>
<td>###name:Betreff; type:select; valid:text; size:1; option:bitte
auswählen; option:ein Angebot; option:Rückruf; value:bitte Auswählen###</td></tr>
<tr>
<td><span class="Normal">Mitteilung:</span></td>
<td></td>
<td>###name:Mitteilung; type:textarea; valid:string; rows:4; cols:38###</td></tr>
<tr>
<td colspan="3">
<p align="left"><br><input value="Anfrage senden" type="submit"> <br><br><br><span class="Normal">Diese Email wird an <a href="mailto:info@darakon.de">info@xxx.de</a> versendet. Felder die mit einem "*" gekennzeichnet sind müssen ausgefüllt werden.<br><br>Vielen Dank für Ihre Nachricht.</span></p></td></tr></tbody></table></span>
2. ein formular-modul:
INPUT:
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : w3concepts.form.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 20-08-2004
* Modified : 18-10-2005 (by halousi)
************************************************/
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\"><tr valign=\"top\">";
echo "<tr><td class=\"text_medium\">Zieladresse (alias@mydomain.com):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[0]\" value=\"CMS_VALUE[0]\" size=\"30\" class=\"text_medium\" /></td></tr>";
echo "<tr class=\"text_medium\"><td>Betreff:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\" size=\"30\" /></td></tr>";
echo "<tr class=\"text_medium\"><td>Antwortadresse (alias@mydomain.com):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\" size=\"30\" /></td></tr>";
echo "<tr class=\"text_medium\"><td>Emailname (z.B. Vorname Name):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\" size=\"30\" /></td></tr>";
echo "<tr class=\"text_medium\"><td>Hintergrundfarbe bei Fehlern (z.B. red):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\" size=\"30\" /></td></tr>";
echo "</table>";
OUTPUT:
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : w3concepts.form.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 20-08-2004
* Modified : 20-08-2004
* Modified : 14-04-2005 by Mathias Rauh <m.rauh@rzwei.de>
18-10-2005 by halousi (jetzt mit datei-anhang)
* - Support for attachments added
************************************************/
class w3form {
var $email, $aufgedroeselt, $form, $formularFeld,$uid;
function w3form() {
}
function setAktion($aktion) { // Action-Adresse in Klasse übernehmen
$this->form['aktion'] = $aktion;
}
// PRIVATE
function sendEmail() {
$uid = md5(uniqid(rand()));
$this->aufdroeseln($this->suppress('sent','Submit'));
$this->generateEmailMessage();
$header .= "MIME-Version: 1.0\n";
$header .= "X-Mailer: PHP\n";
$header .= "From: {$this->email['from']['name']} <{$this->email['from']['email']}>\n";
$header .= "Reply-To: {$this->email['from']['email']}\n";
$header .= "Cc: {$this->email['from']['email']}\n";
$header .= "Return-Path: {$this->email['from']['email']}\n";
if ($_FILES['userfile']['name']) {
$datei = fread(fopen($_FILES['userfile']['tmp_name'],"r"),filesize($_FILES['userfile']['tmp_name']));
$datei = chunk_split(base64_encode($datei));
$header .= "Content-Type: multipart/mixed; boundary=$uid\n";
$header .= "--$uid\n";
$header .= "Content-Type: text/plain\n";
$header .= "Content-Transfer-Encoding: 7bit\n";
$header .= $this->email['message'];
$header .= "\n\n--$uid\n";
$header .= "Content-Type: {$_FILES['userfile']['type']}; name=\"{$_FILES['userfile']['name']}\"\n";
$header .= "Content-Disposition: attachment\n";
$header .= "Content-Transfer-Encoding: base64\n\n";
$header .= "$datei\n";
$header .= "--$uid\n";
mail($this->email['adresses'],$this->email['subject'],'',$header);
}
else {
$header .= "Content-type: text/plain; charset=iso-8859-1\n";
mail($this->email['adresses'],$this->email['subject'],$this->email['message'],$header);
}
}
// 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) > 15 OR strlen($value) > 34) {
$this->email['message'] .= "$key\n$value\n";
} else {
$this->email['message'] .= $key;
$this->email['message'] .= str_repeat(' ',15-strlen($key));
$this->email['message'] .= "$value\n";
}
}
// PRIVATE
function generateEmailMessage() {
if ($this->aufgedroeselt) foreach ($this->aufgedroeselt as $key => $value) {
$this->add2Message($key,$value);
} // end if
}
// 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) {
echo '<form action="'.$this->form['aktion'].'" method="POST" enctype="multipart/form-data">'."\n";
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 'file':
if (!empty($attribute['size'])) $parameter .= " size=\"{$attribute['size']}\"";
echo "<input type=\"file\" $parameter class=\"standard\" $style />";
break;
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']}"];
echo "<input type=\"text\" $parameter value=\"$value\" class=\"standard\" $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 "\" wrap=\"virtual\" class=\"standard\" $style>$value</textarea>";
break;
case 'select':
echo "<select $parameter class=\"standard\" $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 type=\"checkbox\" $parameter value=\"{$attribute['value']}\" checked=\"checked\" class=\"formcheckbox\" />attrval=";
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" class=\"formcheckbox\" />attrval=";
} else {
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" class=\"formcheckbox\" />";
}
} else {
if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" checked=\"checked\" class=\"formcheckbox\" />attrsel=";
} else {
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" class=\"formcheckbox\" />";
}
}
break;
case 'radio':
if (!empty($_POST["{$attribute['name']}"])) {
if ($_POST["{$attribute['name']}"] == $attribute['value']) {
echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\" />";
}
} else {
if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\"/>";
}
}
break;
}
if ($sent && !$this->formularFeldKorrekt($attribute)) echo "<span style=\"color:{$this->form['colorError']};\"> Bitte ausfüllen.</span>";
}
// 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-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;
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 "<span class=\"Ueberschrift\">Formularkonfiguration</span>";
echo "<span class=\"Normal\">Hier ist das Formular sowie der Text einzugeben, der zusammen mit dem Formular ausgegeben werden soll:</span>";
echo "CMS_HTML[0]";
} else {
$aktion = $auth->url(); // Action-Adresse ist URL
$formular = new w3form();
$formular->setAktion("$aktion"); // Action-Adresse an Klasse übergeben
$formular->addEmailAdress("CMS_VALUE[0]");
$formular->setEmailSubject("CMS_VALUE[1]");
//$formular->setEmailFrom("CMS_VALUE[2]","CMS_VALUE[3]");
$formular->setEmailFrom($_POST['E-Mail'],"\"".$_POST['Name'].", ".$_POST['Vorname']."\"");
$formular->setBackgroundError("CMS_VALUE[4]");
$formular->setForm("CMS_HTML[0]");
$antwort = "<span class=\"Normal\">Vielen Dank für Ihre Anfrage, ".$_POST['Anrede']." ".$_POST['Name'].".<br />\nWir haben Ihre Nachricht erhalten und werden sie umgehend bearbeiten.<br><br>Sie erhalten eine Kopie Ihrer Anfrage an ".$_POST['E-Mail']." gesendet</span>";
$formular->setAnswer("$antwort");
$formular->process();
}
?>
ok, modul konfigurieren und das formular im editor ins textfeld kopieren, fertig.
müsste eigentlich funktionieren.
gruß halousi