Mike: Doppelter Mailversand

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

  1. 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

    --
    Ichen
    1. oh je das schnall ich nicht, bin ein php-newbie.

      thx mike

      1. Hi,

        also die Tipps mal der Reihe nach aufgegriffen:

        1. 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.

        2. 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

        3. 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

        --
        -------------------
        Death is nature's way of telling you to slow down.