Mensch: Variablen im Mail-Befehl

Guten Morgen!
Ich habe folgendes Problem:
Ich möchte die Eingaben, die der User in einem Formular tätigt, an den Webmaster der HP schicken. Aber wie übergebe ich nun die Variablen aus dem <form>-Bereich an den mail-Bereich von PHP ?
Habe mir schon selfphp.info angeschaut, aber selbst dort funktioniert das Beispiel
http://www.selfphp.info/funktionsreferenz/mail_funktionen/mail.php#beispiel2
nicht:
Notice: Undefined variable: name_freund in D:\verzeichnis\test2.php on line 3
Notice: Undefined variable: email_freund in D:\verzeichnis\test2.php on line 3
also habe nochmal mit anderen Worten diverse Einträge in einem Formular (haben alle auch ein "name"-Attribut), die per e-mail an den Webmaster sollen.
mfg ein Mensch

  1. Hallo Mensch,
    Wie Du die Daten weiterverarbeitest ist erstmal egal, wichtig sind diese Meldungen:

    Notice: Undefined variable: name_freund in D:\verzeichnis\test2.php on line 3
    Notice: Undefined variable: email_freund in D:\verzeichnis\test2.php on line 3

    Das heisst das Dein Script die Variablen welche Du in test2.php verwendest nicht kennt, diese sind also nicht deklariert.
    Der Grund ist möglicherweise das die "Register Globals" Deiner PHP-Konfiguration abgeschaltet sind, das ist auch gut so. Heisst für Dich allerdings das Du Dir die Variablen aus der Superglobalen Variablen $_POST holen musst. In Deinem Beispiel dann z.B.
    $name_freund = $_POST["name_freund"];
    $email_freund = $_POST["email_freund"];

    Mehr Infos zu den Superglobals http://www.php.net/manual/de/language.variables.predefined.php

    Tipp: Lass Dir zum testen Deine gewünschten Variablen erstmal per echo() ausgeben damit Du siehst das diese auch ankommen und gefüllt sind, mache Dich danach an die Weiterverarbeitung (z.B. Versand der E-Mail)

    Gruss AndreD

    1. Hallo.

      $name_freund = $_POST["name_freund"];
      $email_freund = $_POST["email_freund"];

      Nun erscheint die Fehlermeldung:
      Notice: Undefined index: name_freund in D:\Sait\WebProjekt\info2.php on line 2
      Notice: Undefined index: email_freund in D:\Sait\WebProjekt\info2.php on line 3
      Also funktioniert leider immernoch nicht. Dass die globalen Variablen ausgeschaltet sind, ist beabsichtigt.
      Habe die beiden Zeilen ganz oben hinzugefügt.
      mfg ein Mensch

      P.S.: Danke für den link, nu weiß ich wenigstens schonmal was $_POST überhaupt ist.

      1. Hallo ein Mensch (?),

        Nun erscheint die Fehlermeldung:
        Notice: Undefined index: name_freund in D:\Sait\WebProjekt\info2.php on line 2
        Notice: Undefined index: email_freund in D:\Sait\WebProjekt\info2.php on line 3

        [1] Seufz... bist Du Dir sicher das die Eingabefelder Deines Formulars so heissen? Bist Du Dir sicher das die verwendete Superglobale der Method in Deinem form-Tag entspricht? Diese sollte also in dem Fall method="post" heissen, bei method="get" oder bei der Übergabe der Variablen über die URL werden diese in $_GET gespeichert.

        Dass die globalen Variablen ausgeschaltet sind, ist beabsichtigt.

        Ist aus Sicherheitsgründen auch auf jeden Fall empfehlenswert!

        Habe die beiden Zeilen ganz oben hinzugefügt.

        Ist auch ok, aber siehe [1]!

        P.S.: Danke für den link, nu weiß ich wenigstens schonmal was $_POST überhaupt ist.

        Ja, lies Dir auf jeden Fall bei grundlegenden Problemen die PHP-Doku durch, die ist sehr gut aufgebaut. Die von Dir verwendeten SelfPHP halte ich, vor allem für Einsteiger, (ohne den Arbeitsaufwand des Autors schmälern zu wollen) für weniger geeignet.

        Gruss AndreD

        1. Hallö.

          [1] Seufz... bist Du Dir sicher das die Eingabefelder Deines Formulars so heissen? Bist Du Dir sicher das die verwendete Superglobale der Method in Deinem form-Tag entspricht? Diese sollte also in dem Fall method="post" heissen, bei method="get" oder bei der Übergabe der Variablen über die URL werden diese in $_GET gespeichert.

          ja, es geht ja darum, dass ich das Script von selfphp.info erstmal zum laufen kriege, weil dann dürfte es sich relativ problemlos anpassen lassen. Finde es erstaunlich, dass das Script einer php-Lernpage nicht funktioniert.
          Das komplette Script:
          http://www.selfphp.info/funktionsreferenz/mail_funktionen/mail.php#beispiel2
          mfg ein Mensch (namens Frauke ;) )

          1. Hallo Mensch Frauke :-)

            ja, es geht ja darum, dass ich das Script von selfphp.info erstmal zum laufen kriege, weil dann dürfte es sich relativ problemlos anpassen lassen. Finde es erstaunlich, dass das Script einer php-Lernpage nicht funktioniert.

            Ja, ich habs mir schon heute morgen angeschaut, das ist wohl noch ein Überbleibsel von vor PHP 4.2, ab da sind standardmässig die Reg. Globals auf Off, eben aus Sicherheitsgründen. Vergiss doch mal das Beispielscript ;-) und versuche es selbst hinzubekommen. Als kleine Hilfe mal ein rudimentäres Codebeispiel, sollte so auf jeden Fall funktionieren:

            /*
             * formular.htm:
             */

            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
            <html>
            <head>
              <title>Formular</title>
            </head>
            <body>
              <form action="formhandler.php" method="post">
                <input type="text" name="name">
                <input type="submit" name="Senden" value="Senden">
              </form>
            </body>
            </html>

            In der action steht die Datei welche die Daten entgegen nimmt, Du kannst auch <?php $_SERVER["PHP_SELF"] ?> einsetzen wenn es sich um eine PHP-Datei handelt die sich selbst aufrufen soll. IMHO ist es aber so sauberer, da man Html- und PHP-Code schön trennen kann.
            method ist die Art der Übergabe: Für Formulare gibt es post und get, in der Regel wird post verwendet, die Daten werden somit nicht in der URL übermittelt was die Sache nochmal sicherer macht. get bietet sich z.B. bei Suchmaschinen (siehe Google) an.

            /*
             * formhandler.php:
             */

            <?php

            $name = $_POST["name"];

            echo( "Name: " . $name );

            ?>

            Beachte das die Felder in der globalen Variablen gleich wie Deine entprechenden name-Attribute der input-Felder heissen müssen. Diese übergibst Du an eine lokale Variable (hier $name) und verarbeitest diese beliebig weiter, z.B. Ausgabe, Datenbank, mail() etc...

            Es fehlt natürlich noch die Fehlerbehandlung und Anzeige sowie die obligatorische "Vielen Dank"-Seite. Aber es geht ja mal nur rein um die Übergabe der Variablen. Ich hoffe das es Dir weiterhilft!

            Gruss AndreD

            1. Hallöchen,

              Für Formulare gibt es post und get, in der Regel wird post verwendet, die Daten werden somit nicht in der URL übermittelt was die Sache nochmal sicherer macht.

              Wenigstens das wußte ich schon :)

              Es fehlt natürlich noch die Fehlerbehandlung und Anzeige sowie die obligatorische "Vielen Dank"-Seite. Aber es geht ja mal nur rein um die Übergabe der Variablen. Ich hoffe das es Dir weiterhilft!

              Japp, es hilft mir weiter, vielen Dank und die Absicherung kriege ich bestimmt auch noch irgendwie hin.
              Also schönen Tag noch, meine nächster Stolperstein kommt bestimmt.
              mfg ein Mensch ;)