neues formularmodul :: w3concepts.form.v1
das anführungszeichen am ende hast du auch im quellcode? ich würde das mal weglassen und schauen, ob es dann funktioniert.
und zum verständnis: die klassen werden nicht angelegt, sondern nur referenziert. die klassen müssen im css natürlich bereits bestehen.
und zum verständnis: die klassen werden nicht angelegt, sondern nur referenziert. die klassen müssen im css natürlich bereits bestehen.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Warning: Invalid argument supplied for foreach......
Hallo Kummer,
ich habe mit dem Formular folgendes Problem:
Nach dem Absenden kommt folgende Fehlermeldung:
Warning: Invalid argument supplied for foreach() in /mnt/kw2/01/573/00000017/htdocs/bm/cms/front_content.php(567) : eval()'d code on line 504
Mein Script sieht wie folgt aus:
Input:
Output:
Formular:
Ich erhalte zwar eine Mail mit den in der Konfiguration festgelegten Daten, allerdings werden keine der Formulareinträge angezeigt. Ich habe so gut wie keine PHP-Erfahrung, deshalb bitte ich Dich um Hilfe.
Vorab Danke für Deine Mühe.
ich habe mit dem Formular folgendes Problem:
Nach dem Absenden kommt folgende Fehlermeldung:
Warning: Invalid argument supplied for foreach() in /mnt/kw2/01/573/00000017/htdocs/bm/cms/front_content.php(567) : eval()'d code on line 504
Mein Script sieht wie folgt aus:
Input:
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : w3concepts.form.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 20-08-2004
* Modified : 20-08-2004
************************************************/
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\"><tr valign=\"top\">";
echo "<tr><td>Zieladresse (zieladresse@ihre-Domain.de):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[0]\" value=\"CMS_VALUE[0]\" size=\"30\" /></td></tr>";
echo "<tr><td>Betreff:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\" size=\"30\" /></td></tr>";
echo "<tr><td>Antwortadresse (antwortadresse@ihre-domain.de):</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\" size=\"30\" /></td></tr>";
echo "<tr><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><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>";
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
************************************************/
class w3form {
var $email, $aufgedroeselt, $form, $formularFeld;
function w3form() {
}
// PRIVATE
function sendEmail() {
$this->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<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="" 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':
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 "<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 "\" wrap=\"virtual\" $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 type=\"checkbox\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\"/>";
}
} else {
if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
} else {
echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\"/>";
}
}
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;
}
}
// 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 "<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();
}
?>
Formular:
Code: Alles auswählen
<TABLE style="FEFEFE: 100%" cellPadding=1 width="100%" border=0>
<TBODY>
<TR>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>Firma:</FONT></TD>
<TD> </TD>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>###name:Firma; type:text; valid:text; size:50;mandatory:false###</FONT></TD></TR>
<TR>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>Anrede:</FONT></TD>
<TD></TD>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>###name:Anrede; type:select; valid:text; size:1; option:bitte auswählen; option:Herr; option:Frau; value:bitte Auswählen###</FONT></TD></TR>
<TR>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>Name:*</FONT></TD>
<TD></TD>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>###name:Name; type:text; valid:text; size:50; mandatory:true###</FONT></TD></TR>
<TR>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>Straße, Nr.:*</FONT></TD>
<TD></TD>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>###name:Strasse; type:text; valid:text; size:40; mandatory:true### ###name:Nr; type:text; valid:integer; size:5; mandatory:true### </FONT></TD></TR>
<TR>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>PLZ, Ort:*</FONT></TD>
<TD></TD>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>###name:PLZ; type:text; valid:integer; size:5; mandatory:true### ###name:Ort; type:text; valid:text; size:40; mandatory:true###</FONT></TD></TR>
<TR>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>Land:</FONT></TD>
<TD></TD>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>###name:Land; type:text; valid:text; size:50;mandatory:false###</FONT></TD></TR>
<TR>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>Telefon:*</FONT></TD>
<TD></TD>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>###name:Telefon; type:text; valid:string; size:50; mandatory:true###</FONT></TD></TR>
<TR>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>E-Mail:*</FONT></TD>
<TD></TD>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>###name:E-Mail; type:text; valid:email; size:50; mandatory:true###</FONT></TD></TR>
<TR>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>Mitteilung:</FONT></TD>
<TD></TD>
<TD><FONT face="Arial, Helvetica, Verdana, Sans Serif" size=2>###name:Mitteilung; type:textarea; valid:string; rows:4; cols:38###</FONT></TD></TR>
<TR>
<TD colSpan=3>
<P align=left><BR> <INPUT type=submit value=senden></P></TD></TR></TBODY></TABLE>
Vorab Danke für Deine Mühe.
siehe oben
Hallo,
bei dem oben beschrieben Problem handelt es sich um ein Strato Problem. Strato hat auch bei der Installation von Contenido ein paar Probleme gemacht. Welche ich durch diese Forum aber klären konnte. Da die Seite für einen Kunden ist, der bei Strato hostet, bin ich aber auf eine Lösung angewiesen. Ich habe die gesamte Sache nähmlich auf meinem Server ausprobiert und siehe da, es läuft sofort ohne Probleme.
Jetzt habe ich aber ein Problem. Auch nach intensievster suche habe ich keine Lösungsansatz.
Weiß einer von Euch Rat?? Für schnelle Hilfe wäre ich sehr dankbar.
Ich könnte mir gut vorstellen, das die Lösung, die bei den Installationsschwierigkeiten geholfen hat auch hier vielleicht weiter hilft.
Hier der Link:
http://www.contenido.org/forum/viewtopi ... +parameter
Für Eure hilfe schonmal danke.
bei dem oben beschrieben Problem handelt es sich um ein Strato Problem. Strato hat auch bei der Installation von Contenido ein paar Probleme gemacht. Welche ich durch diese Forum aber klären konnte. Da die Seite für einen Kunden ist, der bei Strato hostet, bin ich aber auf eine Lösung angewiesen. Ich habe die gesamte Sache nähmlich auf meinem Server ausprobiert und siehe da, es läuft sofort ohne Probleme.
Jetzt habe ich aber ein Problem. Auch nach intensievster suche habe ich keine Lösungsansatz.
Weiß einer von Euch Rat?? Für schnelle Hilfe wäre ich sehr dankbar.
Ich könnte mir gut vorstellen, das die Lösung, die bei den Installationsschwierigkeiten geholfen hat auch hier vielleicht weiter hilft.
Hier der Link:
http://www.contenido.org/forum/viewtopi ... +parameter
Für Eure hilfe schonmal danke.
das formularmodul greift nicht auf die db zu. insofern dürfte das problem woanders zu suchen sein...
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
welche php-version läuft auf dem server? seit php5 gibt es einige massgebliche änderungen, die man vielleicht berücksichtigen müsste.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
@ Kummer
###name:Firmenname; type:text; class:textfeld; valid:text; size:35###
ausgegeben wird es jedoch so:
<input type="text" name="Firmenname" size="35" value="" />
keine ahnung warum die class fehlt! styles sind natürlich schon angelegt
gruß,
nico
so sieht die Zeile aktuell aus:das anführungszeichen am ende hast du auch im quellcode? ich würde das mal weglassen und schauen, ob es dann funktioniert.
und zum verständnis: die klassen werden nicht angelegt, sondern nur referenziert. die klassen müssen im css natürlich bereits bestehen.
###name:Firmenname; type:text; class:textfeld; valid:text; size:35###
ausgegeben wird es jedoch so:
<input type="text" name="Firmenname" size="35" value="" />
keine ahnung warum die class fehlt! styles sind natürlich schon angelegt
gruß,
nico
mein fehler. ich bin mir nicht sicher, ob klassen schon integriert sind. das muss ich selber noch nachschauen.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
email from: Name, Vorname <name@email.de>
Hallo liebe Community,
ich wollte nochmal das Thema von OAA und grossy aufgreifen, dass in der zu versendenen E-Mail als Absender Name, Vorname erscheinen und man direkt auf "Antworten" klicken kann.
Wenn ich nun die von Andreas beschriebenen Änderungen durchführe:
durch folgende zur ersetzen
dann steht in der empfangenen E-Mail als Absender "kundenname@server.de". Wenn ich nun beim 2. Argument von setEmailFrom nur "$_POST['kundenname']" angebe, dann wird der 'kundenname' angezeigt, und die E-Mail-Adresse wird auch mit übergeben, man kann also darauf direkt antworten.
Das ist ja schon super, jetzt würde ich allerdings den Vornamen auch noch gerne anzeigen lassen.
Weiss jemand, woran das liegen kann?
Gruss
David
ich wollte nochmal das Thema von OAA und grossy aufgreifen, dass in der zu versendenen E-Mail als Absender Name, Vorname erscheinen und man direkt auf "Antworten" klicken kann.
Wenn ich nun die von Andreas beschriebenen Änderungen durchführe:
Code: Alles auswählen
$formular->setEmailFrom("CMS_VALUE[2]","CMS_VALUE[3]");
Code: Alles auswählen
$formular->setEmailFrom($_POST['kundenemail'],$_POST['kundenname'].", ".$_POST['kundenvorname']);
Das ist ja schon super, jetzt würde ich allerdings den Vornamen auch noch gerne anzeigen lassen.
Weiss jemand, woran das liegen kann?
Gruss
David
Bei mir funktioniert das so:Gruss Thomas
Code: Alles auswählen
$formular->setEmailFrom($_POST['kundenemail'],$_POST['kundenvorname']." ".$_POST['kundenname']);
w3concepts.form.v1form.v1 kann jetzt mit Attachments umgehe
Hallo,
nachdem ich dringend die Möglichkeit brauchte, mit form.v1 Anhänge verschicken zu lassen, möchte ich Euch das Ergebnis nicht vorenthalten.
Darüber hinaus habe ich noch die Referenzen in den Funktionsaufrufen gelöscht, da mein Provider damit seine Probleme hatte (scheint aber trotzdem zu funktionieren).
INPUT (unverändert)
OUTPUT
Etwas eleganter könnte man das vielleicht mit der phpmailer-Klasse lösen, aber ich hatte keine Muße, mich da reinzulesen.
Viel Spaß
Mathias
nachdem ich dringend die Möglichkeit brauchte, mit form.v1 Anhänge verschicken zu lassen, möchte ich Euch das Ergebnis nicht vorenthalten.
Darüber hinaus habe ich noch die Referenzen in den Funktionsaufrufen gelöscht, da mein Provider damit seine Probleme hatte (scheint aber trotzdem zu funktionieren).
INPUT (unverändert)
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : w3concepts.form.v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 20-08-2004
* Modified : 20-08-2004
************************************************/
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>";
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
* - 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 .= "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 "<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]";
} 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 = "<p>Vielen Dank für Ihr Interesse an der GFU, ".$_POST['Anrede']." ".$_POST['Name'].".<br />\nWir haben Ihre Nachricht erhalten und werden sie umgehend bearbeiten.</p>";
$formular->setAnswer("$antwort");
$formular->process();
}
?>
Viel Spaß
Mathias
Zuletzt geändert von rzwei am Do 2. Nov 2006, 00:57, insgesamt 1-mal geändert.
ähm mal so nebenbei
was bedeutet denn bitte das wort -> aufdroeseln ??
was bedeutet denn bitte das wort -> aufdroeseln ??
*** make your own tools (wishlist :: thx)
-
- Beiträge: 5478
- Registriert: Di 2. Mär 2004, 21:11
- Wohnort: Halchter, wo sonst? ;-)
- Kontaktdaten:
emergence hat geschrieben:ähm mal so nebenbei
was bedeutet denn bitte das wort -> aufdroeseln ??
auf|drö|seln <sw. V.; hat> (ugs.): (Zusammengedrehtes o. Ä.) auf etw. mühevolle u. Zeit beanspruchende Weise wieder entwirren: eine Kordel, verhedderte Wolle a.; Ü ein Problem a. (analysieren).
(c) Dudenverlag
und ich dachte, das sei allgemeingut... so kann man sich täuschen!
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)