Klaus Peter: Header Probleme

Hallo,

habe ein kleines Problem und zwar möchte ich, dass wenn das Kontaktformular gesendet wird nur oben steht "From: Anmeldeformular", aber wenn ich dem Betreffenden antworten will, soll das Email-Programm die angegebene Email- Adresse aus dem Formular nehmen. Es geht irgendwie, es scheitert bei mir nur bei der Umsetzung

$betreff = "Anmeldeformular Schwimmkurs";
$from = "From: Anmeldeformular";
$weiterleiten = 'Reply To: ' .$email;

mail($an,$betreff,$text,$from,$weiterleiten);

Kann mir jemand helfen?

  1. Huhu Klaus,

    mail($an,$betreff,$text,$from,$weiterleiten);

    http://de2.php.net/manual/en/function.mail.php

    lies dort nach was die einzelnen Parameter bedeuten und schau Dir die Beispiele an.

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. Danke für die Hilfe!!!

      Leider haben mir die Informationen nicht geholfen, da mein eigentliches Problem damit nicht gelöst werden kann.

      Bin für weitere Hilfe dankbar.

      1. Huhu Klaus,

        Leider haben mir die Informationen nicht geholfen, da mein eigentliches Problem damit nicht gelöst werden kann.

        Wo wird die Variable $email zugewiesen?
        Evtl. bist Du hier in die "register globals"-Falle getappt.
        Poste mal das aktuelle Skript (wenn es sehr lang ist auch gerne nur den relevanten Ausschnitt) .

        Viele Grüße

        lulu

        --
        bythewaythewebsuxgoofflineandenjoytheday
        1. So hier mal ausschnitte aus dem script.

          $gesendet = $_POST['gesendet'];
          $email = $_POST['email'];
          $betreff = "Anmeldeformular Schwimmkurs";
          $from = 'From: Anmeldeformular';
          $weiterleiten = 'Reply-To: ' .$email;

          if ($gesendet == "Absenden") {
           $an ="";

          mail($an,$betreff,$text,$from,$weiterleiten);

          function eingaben_ueberpruefen(){
           var mail = document.Formular.email.value;
          ...
          else if (mail.length < 5 || mail.indexOf ('@',0) == -1 || mail.indexOf ('.',0) == -1){
            alert("Bitte geben Sie eine gültige E-Mail-Adresse ein!")
            document.Formular.email.select();
            return false;
           }
          ...
          <tr>
             <td><b>E-Mail:</b></td>
             <td><input type="text" name="email" size="35" maxlength="40"></td>
            </tr>

          1. Hallo

            $gesendet = $_POST['gesendet'];
            $email = $_POST['email'];
            $betreff = "Anmeldeformular Schwimmkurs";
            $from = 'From: Anmeldeformular';
            $weiterleiten = 'Reply-To: ' .$email;

            Was wird mit der Variable $email gemacht? Ich sehe sie im weiteren Verlauf nicht mehr.

            if ($gesendet == "Absenden") {
            $an ="";

            Die Empfängeradresse soll leer bleiben?

            mail($an,$betreff,$text,$from,$weiterleiten);

            Schau dir den Aufbau der Funktionsparameter auf der Seite, die dir lulu verlinkt hat, nochmal an. Dort, wo du $from einfügst, kommen die weiteren Headerangaben rein, und zwar _alle_!

            Tschö, Auge

            --
            Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
            (Victor Hugo)
            Veranstaltungsdatenbank Vdb 0.1
          2. Hallo Klaus Peter!

            Das was Du da versuchst ist nicht ungefährlich. Wenn Du eine Variable, die der Anwender beeinflussen kann direkt und ungefiltert in den E-Mail Header schreibst, kann Dein Skript zum Massenversand von Spam missbraucht werden.

            Hier ist ein Artikel, der die Problematik erklärt: http://www.heise.de/security/artikel/66815

            »» So hier mal ausschnitte aus dem script.

            »» $email = $_POST['email'];
            »» [...]
            »» $weiterleiten = 'Reply-To: ' .$email;
            »» [...]
            »»  mail($an,$betreff,$text,$from,$weiterleiten);
            »» [...]

            Das könnte für Spamversand missbraucht werden, wenn Du nicht glücklicherweise einen Fehler gemacht hättest ;-)

            Du übergibst den Reply-To Header in $weiterleiten (wo $_POST['email'] ungefiltert enthalten ist, also erst Filter einbauen bevor Du das hochlädst!) als 5. Parameter an die Mail-Funktion. Guck Dir nochmal an wozu genau der 5. Parameter da ist, bzw. wo Header hingehören. Und wenn Du solche Header einsetzt, lese auf jeden Fall den oben verlinkten Artikel!

            »» [...]
            »» function eingaben_ueberpruefen(){
            »»  var mail = document.Formular.email.value;
            »» [...]

            Dir ist schon bewusst, dass diese Funktion nur aufgerufen werden kann, solange Javascript im Browser aktiviert ist, oder? Das kann zwar praktisch sein Formulareingaben noch vor dem Abschicken zu überprüfen, entbindet Dich aber nicht davon, serverseitig nochmal zu prüfen - vor allem dann, wenn Du die Variablen an externe Programme wie sendmail oder eine Datenbank übergibst.

            »» ...
            »» else if (mail.length < 5 || mail.indexOf ('@',0) == -1 || mail.indexOf ('.',0) == -1){

            Abgesehen davon, dass man mit Javascript sowieso nicht wirksam filtern kann - wenn Du diesen Filter auf PHP-überträgst, kann dadurch immer noch Spam versendet werden. Du musst schon exakter filtern, wenn Du vom Anwender beeinflussbare Daten als Header verwenden willst.

            Grüße
            Andreas