Doppelter Mailversand
Mike
- php
hallo,
ich habe ein kontaktformular gebastelt das per post an eine php datei daten übergibt, also ein klassisches kontaktformular. nun ist bei dem fomrular aber eine checkbox (variable ist email_me) dabei namens "kopie auch an mich senden", also hab ich eine if anweisung eingebaut wenn die übergibt wird soll die email auch an mich gesendet werden. aber leider funzt die geschichte nicht, ich weis aber nicht wo der fehler liegt.
hier das php script:
{
$MailTo="info@mail.de";
$inhalt = "Nachname: $n_name\nVorname: $v_name\n\nStrasse: $strasse\nPLZ/Ort: $ort\n\nTelefon: $telefon\nFAX: $telefax\n\nE-Mail: $email\nHomepage: $homepage\n\n";
$inhalt .= "\n\n";
$inhalt .= "Nachricht:\n$nachricht";
mail($MailTo, $betreff, $inhalt, "From: $email");
if ($email_me) {
mail($email_me, $betreff, $inhalt, "From: $email");
}
}
thx
mike
Moin Mike!
hast du überprüft, ob die variable $email_me wirklich deine Mailadresse enthält (mit print_r($_POST) )? Und noch was, nutze lieber $_POST["email_me"] bzw $_POST["variablenname"] für die variabln die über dein formular "gepostet" werden, dann ist dein script auch mit servern kompatibel, die register_globals auf off gestellt haben. Ebenfalls solltest du nicht die post-variablen direkt an die mail()-funktion übergeben, ohne sie vorher auf richtigkeit zu prüfen.
tschüssi
ichen
oh je das schnall ich nicht, bin ein php-newbie.
thx mike
Hi,
also die Tipps mal der Reihe nach aufgegriffen:
Für dein primäres Problem:
Mit Hilfe der Funktion print_r kannst du dir Variablen ausgeben lassen, insbesondere Arrays. Tu dies mit dem superglobalen $_POST-Array um zu sehen, welcher Wert für deine Variablen eigentlich ankommt, insbesondere für $email_me.
Nutzereingaben:
Es ist eine große Gefahr, wenn man Nutzerangaben ungeprüft übernimmt. Aus deinem Skript lässt sich z.B. gut eine Spamschleuder bauen, weil ich offenbar alle Werte einfach von außen einschmuggeln kann. Dank FROM-Header kann ich sogar den Absender fälschen.
PHP-FAQ: Böse und gute Variablen
PHP-FAQ: Traue niemandem
Register Globals.
Dein Skript scheint register_globals=on zu verwenden. Was heißt das? PHP nimmt Daten die per Formular oder URL übergeben und verwandelt sie automatisch in Variablen. Vorteil für dich: Gibts im Formular ein Input namens "name", dann gibts in PHP auch gleich eine Variable namens $name. Problem: Indem ich einfach wildfremde Variablen an dein Skript schicke kann ich unter Umständen (je nach Programmierung) Sachen kaputt machen oder Zugriff auf geschützte Informationen nehmen. Bei neueren Versionen von PHP ist deshalb register_globals von Haus aus deaktiviert. Der bevorzugte Zugriff geht stattdessen über die superglobalen Arrays, insbesondere $_GET und $_POST, die somit klar von den lokalen Skriptvariablen getrennt bleiben.
PHP-FAQ: Register Globals
MfG
Rouven