^_^
-
- Beiträge: 1758
- Registriert: Mo 1. Aug 2005, 00:35
- Wohnort: in der schönen Hallertau, mitten im Hopfen
- Kontaktdaten:
ich habe jetzt was das funktioniert (halbwegs )
soll heissen mail kommt an und anhang auch.
das ganze stammt aus diesem thread
http://contenido.org/forum/viewtopic.ph ... attachment
ich habe sowohl die formular eingabe als auch den outputcode auf ein attachment reduziert. zum testen:
click hier
leider noch mit 2 kleinen fehlern.
1) nach dem versenden erscheint im frontend
2) in der mail kommt kein text an
code ist wie gesagt fast 1:1 wie im thread aus dem es stammt bis auf die kürzung
(soll ich meinen code hier nochmal posten?)
soll heissen mail kommt an und anhang auch.
das ganze stammt aus diesem thread
http://contenido.org/forum/viewtopic.ph ... attachment
ich habe sowohl die formular eingabe als auch den outputcode auf ein attachment reduziert. zum testen:
click hier
leider noch mit 2 kleinen fehlern.
1) nach dem versenden erscheint im frontend
Code: Alles auswählen
Warning: fread(): supplied argument is not a valid stream resource in /home/httpd/vhosts/contenido.funjumping.de/httpdocs/front_content.php(770) : eval()'d code on line 405
code ist wie gesagt fast 1:1 wie im thread aus dem es stammt bis auf die kürzung
(soll ich meinen code hier nochmal posten?)
Grüsse, Guido
"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
-
- Beiträge: 1758
- Registriert: Mo 1. Aug 2005, 00:35
- Wohnort: in der schönen Hallertau, mitten im Hopfen
- Kontaktdaten:
pooooh habe gestern nacht noch soviel rumprobiert, dass ich jetzt ncht mehr sicher bin aus welchem posting der nachfolgende code stammtvisionary hat geschrieben:@mvf bitte poste mal den code
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>";
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 .= "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/parallel; boundary=$uid\n";
$header .= "--$uid\n";
$header .= "Content-Type: text/plain; charset=iso-8859-1\n";
$header .= "Content-Transfer-Encoding: 8bit\n";
$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'],$this->email['message'],$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>";
$formular->setAnswer("$antwort");
$formular->process();
}
?>
Code: Alles auswählen
<span class="Normal">
<table width="100%" cellpadding="1" border="0">
<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 type="file" name="userfile" /> </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 type="submit" value="Anfrage senden" /> <br />
<br />
<br />
<span class="Normal">Felder die mit einem "*" gekennzeichnet sind müssen ausgefüllt werden.<br />
<br />
Vielen Dank für Ihre Nachricht.</span></p>
</td>
</tr>
</table>
</span>
setze ich den ersten content type im output auf
Code: Alles auswählen
$header .= "Content-Type: multipart/alternative; boundary=$uid\n";
bekomme ich sobald ich ein attachment anfüge immer den body der mail auch als anlage, also 2 attachments, das angehängte file plus eine textdatei mit dem body als inhalt, und der 'wahre' inhalt des bodys in der mail wird auch ordentlich gefüllt
setze ich den ersten content type auf
Code: Alles auswählen
$header .= "Content-Type: multipart/mixed; boundary=$uid\n";
bekomme ich sobald ich ein attachment anfüge den body der mail als anlage, also 2 attachments, das angehängte file plus eine textdatei mit dem body als inhalt, und der 'wahre' inhalt des bodys in der mail bleibt leer.
nehme ich ein attachment bekomme ich den body auch im body angezeigt.
Grüsse, Guido
"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
@mvf
habe jetzt das modul fertiggestellt war viel arbeit
der 2. anhang kommt nicht mehr
und so sieht es jetzt aus angepasst an das design
[/url]http://www.mk-anras.net/ta/cms/front_co ... at=217[url]
bitte keine mails abschicken danke!
[/url]
habe jetzt das modul fertiggestellt war viel arbeit
der 2. anhang kommt nicht mehr
und so sieht es jetzt aus angepasst an das design
[/url]http://www.mk-anras.net/ta/cms/front_co ... at=217[url]
bitte keine mails abschicken danke!
[/url]
@i-fekt
färben sich die felder denn nicht rot wenn kein eintag da ist
wollte ein schlichtes einfaches design
habe deshalb auch die textausgabe zu den fehlen entfernt
ein fehler wird ja eh mit rotem backgrund dargestellt
ja hast recht
der ie kanns aber netscape nicht
da muss ich wohl wieder an den code ran
färben sich die felder denn nicht rot wenn kein eintag da ist
wollte ein schlichtes einfaches design
habe deshalb auch die textausgabe zu den fehlen entfernt
ein fehler wird ja eh mit rotem backgrund dargestellt
ja hast recht
der ie kanns aber netscape nicht
da muss ich wohl wieder an den code ran
so jetzt klappts auch mit netscape
die fehlerfarbe ist jetzt mal grau
natürlich kann auch jede andere verwendet werden:lol:
demo
http://www.mk-anras.net/ta/cms/front_co ... ?idcat=217
die fehlerfarbe ist jetzt mal grau
natürlich kann auch jede andere verwendet werden:lol:
demo
http://www.mk-anras.net/ta/cms/front_co ... ?idcat=217
Hallo zusammen,
Im Modul von Andreas hat es einen Fehler. Diesen merkt man normalerweise nicht weil man nur eine E-Mail-Adresse als Empfänger angibt:
müsste sein:
Die Variable emailAdresses gibt es nicht!
Gruss, Simon
Im Modul von Andreas hat es einen Fehler. Diesen merkt man normalerweise nicht weil man nur eine E-Mail-Adresse als Empfänger angibt:
Code: Alles auswählen
function addEmailAdress($email) {
if (empty($this->emailAdresses)) {
$this->email['adresses'] .= "$email";
} else {
$this->email['adresses'] .= ", $email";
}
}
Code: Alles auswählen
function addEmailAdress($email) {
if (empty($this->email['adresses'])) {
$this->email['adresses'] .= "$email";
} else {
$this->email['adresses'] .= ", $email";
}
}
Gruss, Simon
Hallo,
ich habe das Modul w3concepts.form.v1 auch um die Attachment-Funktion erweitert, allerdings habe ich das Problem, dass bei mir dann nur der Pfad zum Attachment im Mail angeführt ist, die Datei aber nicht mitgeschickt wird.
Hier mal der Code:
Vielleicht kann mir ja jemand weiterhelfen.
Grüße,
Andi
ich habe das Modul w3concepts.form.v1 auch um die Attachment-Funktion erweitert, allerdings habe ich das Problem, dass bei mir dann nur der Pfad zum Attachment im Mail angeführt ist, die Datei aber nicht mitgeschickt wird.
Hier mal der Code:
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());
if ($_FILES['userfile1']['name']) {
$datei1 = fread(fopen($_FILES['userfile1']['tmp_name1'],"r"),filesize($_FILES['userfile1']['tmp_name']));
$datei1 = chunk_split(base64_encode($datei1));
}
// 2
if ($_FILES['userfile2']['name']) {
$datei2 = fread(fopen($_FILES['userfile2']['tmp_name'],"r"),filesize($_FILES['userfile2']['tmp_name']));
$datei2 = chunk_split(base64_encode($datei2));
}
$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['userfile1']['type']}; name=\"{$_FILES['userfile1']['name']}\"\n";
$header .= "Content-Disposition: attachment\n";
$header .= "Content-Transfer-Encoding: base64\n\n";
$header .= "$datei1\n";
$header .= "--$uid\n";
// 2
if($_FILES['userfile2']['name']) {
$header .= "Content-Type: {$_FILES['userfile2']['type']}; name=\"{$_FILES['userfile2']['name']}\"\n";
$header .= "Content-Disposition: attachment\n";
$header .= "Content-Transfer-Encoding: base64\n\n";
$header .= "$datei2\n";
$header .= "--$uid\n";
}
}
// 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();
}
?>
Grüße,
Andi