Ordnen von Formularfelder in E-mail
Pierre Schubert
- php
Hallo,
ich benutze den einfachen Formmailer von Patrick Canterino
http://aktuell.de.selfhtml.org/tippstricks/php/form-mail/index.htm
und habe aber ein paar Probleme. Vorweg: Ich bin ein Newbie in PHP.
Der Formmailer schickt mir ja eine Nachricht mit den ausgefüllten Werten und das macht er in einer Reihenfolge von oben nach unten. Ich habe jetzt aber die Formularfelder in eine Tabelle gesteckt
http://s86212963.einsundeinsshop.de/bs_shopdata/frage.php
und die Werte werden mir jetzt durcheinander zugeschickt.
ungefähr so:
Anrede:****
Straße:****
Vorname:****
PLZ:****
Nachname:****
Ort:****
anstatt von:
Anrede:****
Vorname:****
Nachname:****
Straße:****
PLZ:****
Ort:****
Wie kann ich dich Werte ordnen?
Danke im Voraus
Pierre
Hallo Pierre.
http://aktuell.de.selfhtml.org/tippstricks/php/form-mail/index.htm
Wie kann ich dich Werte ordnen?
Ordne die Eingabefelder deines Formulares entsprechend der gewünschten Reihenfolge an.
Freundschaft!
Siechfred
wenns das so leicht wäre... ich brauche aber der form wegen eine ganz bestimmte reihenfolge...
hier noch mal der Link wie ich es gemacht habe:
http://s86212963.einsundeinsshop.de/bs_shopdata/frage.php
Hallo Pierre.
wenns das so leicht wäre... ich brauche aber der form wegen eine ganz bestimmte reihenfolge...
Schlecht. Die Reihenfolge innerhalb der HTML-Datei bestimmt die Reihenfolge in der E-Mail.
Ja, Verdacht bestätigt. Da wird dir wohl nix anderes übrig bleiben, als die E-Mail Stück für Stück zusammen zu setzen. Allerding solltest du $_POST sehr vorsichtig einsetzen, also vorher entschärfen, einfaches Beispiel:
$name = htmlspecialchars(stripslashes(trim($_POST['name'])));
$vorname = htmlspecialchars(stripslashes(trim($_POST['vorname'])));
$mailtext = "Name: ".$name."\n";
$mailtext += "Vorname: ".$vorname."\n";
Freundschaft!
Siechfred
whow! Vielen Dank! Aber könntest du mir das oben in den PHP-Code einfügen? Ich habe keine Ahnung... Den Rest bekomme ich schon hin! Nochmal vielen Dank!
<?php
$strEmpfaenger = '*****.******@t-online.de';
$strFrom = '"Frage zu einem Artikel"';
$strSubject = 'Frage zu einem Artikel';
$strReturnhtml = 'danke.html';
$strDelimiter = ":\t";
if($_POST)
{
$strMailtext = "";
while(list($strName,$value) = each($_POST))
{
if(is_array($value))
{
foreach($value as $value_array)
{
$strMailtext .= $strName.$strDelimiter.$value_array."\n";
}
}
else
{
$strMailtext .= $strName.$strDelimiter.$value."\n";
}
}
if(get_magic_quotes_gpc())
{
$strMailtext = stripslashes($strMailtext);
}
mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
or die("Die Mail konnte nicht versendet werden.");
header("Location: $strReturnhtml");
exit;
}
?>
Hallo Pierre.
Aber könntest du mir das oben in den PHP-Code einfügen? Ich habe keine Ahnung... Den Rest bekomme ich schon hin! Nochmal vielen Dank!
Ich will dir nicht zu nahe treten, aber das, was du ändern musst, habe ich dir gepostet. Wenn du an einer Stelle nicht weiter kommst, lies hier nach: http://de.php.net/manual/de/index.php. Du solltest wissen, was du tust, wenn du eine so mächtige Technologie wie PHP einsetzen willst.
Freundschaft!
Siechfred
Hello,
Ja, Verdacht bestätigt. Da wird dir wohl nix anderes übrig bleiben, als die E-Mail Stück für Stück zusammen zu setzen. Allerding solltest du $_POST sehr vorsichtig einsetzen, also vorher entschärfen, einfaches Beispiel:
$name = htmlspecialchars(stripslashes(trim($_POST['name'])));
$vorname = htmlspecialchars(stripslashes(trim($_POST['vorname'])));usw. usf.
Alle Felder, die im Mailbody landen, können so formatiert werden, wie immer sie wollen. Im Extremfall werden sie eben einfach nicht übertragen.
Aber alle Felder, die im Mailheader landen, sollten "kastriert" werden, da sie ggf. Funnktionen der Mailserverkette beeinflussen können und damit kritisch sind.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Tom.
$name = htmlspecialchars(stripslashes(trim($_POST['name'])));
$vorname = htmlspecialchars(stripslashes(trim($_POST['vorname'])));usw. usf.
Alle Felder, die im Mailbody landen, können so formatiert werden, wie immer sie wollen. Im Extremfall werden sie eben einfach nicht übertragen.
Nun, es kommt darauf an. Will man die Funktionalitäten eines Affenformulares nutzen, sollte es ja eine Eingabenprüfung geben, die beim Scheitern die Eingabeseite erneut auswirft und mit den bereits eingegebenen Werten versieht. Zudem steht noch die Problematik von HTML-Mails im Raum, sodass ich es für gar nicht so verkehrt halte, die Kastration auch für die im Mailbody zu übertragenden Felder vorzunehmen.
Aber alle Felder, die im Mailheader landen, sollten "kastriert" werden, da sie ggf. Funnktionen der Mailserverkette beeinflussen können und damit kritisch sind.
Ja, volle Zustimmung.
Freundschaft!
Siechfred
Hello,
Alle Felder, die im Mailbody landen, können so formatiert werden, wie immer sie wollen. Im Extremfall werden sie eben einfach nicht übertragen.
Nun, es kommt darauf an. Will man die Funktionalitäten eines Affenformulares nutzen, sollte es ja eine Eingabenprüfung geben, die beim Scheitern die Eingabeseite erneut auswirft und mit den bereits eingegebenen Werten versieht. Zudem steht noch die Problematik von HTML-Mails im Raum, sodass ich es für gar nicht so verkehrt halte, die Kastration auch für die im Mailbody zu übertragenden Felder vorzunehmen.
Da hast Du natürlich recht. danke für den Hinweis. HTML- und überhaupt Mime-Mails mit externen Inhalten können da noch "interessante" Effekteo hervorrufen, da neben dem Plain Text Reader auch Picture Renderer und HTML-Parser nebst Nachladefunktionalität involviert sind. Und das die Löcher haben, ist ja durch die meldungen von 15.09 zum Thema "JPEG" mal wieder klar geworden.
Ich habe hier den Eindruck gewonnen, dass wir uns mal wieder "kurz vor Stralingrad" befinden.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom