E-Mail Script

  • Hallo,


    Ich habe da ein kleines Problem.
    Ich möchte von meiner html-Seite eine E-Mail versenden lassen.
    Heißt jemand geht auf die Seite und kann da alles eingeben und die email wird an mich versendet.
    Habe schon praktisch alles zusammen aber es geht nicht.
    KAnn mir jemand sagen was da falsch sein könnte?
    HTML:
    <form action="mail.php" method="post">
    Name:&nbsp;&nbsp;&nbsp;&nbsp; <input name="name" size="20" type="text"><br>
    Email:&nbsp;&nbsp;&nbsp;&nbsp; <input name="email" size="20" type="text"><br>
    Betreff:&nbsp;&nbsp;&nbsp; <select name="betreff" size="1">
    <option>Bewerbung</option>
    <option>Hilfe</option>
    <option>Kritik</option>
    <option>sonstiges</option>
    </select><br>
    Text:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <textarea cols="25" name="text" rows="5"></textarea><br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <input name="abschicken" type="submit" value="Abschicken">
    <input name="loeschen" type="reset" value="L&ouml;schen">
    </form>


    PHP:
    <?php


    if($abschicken)
    {
    if(empty($name) || empty($email) || empty($text))
    {
    echo "Bitte gehen Sie zur&uuml;ck und f&uuml;llen Sie alle Felder aus!";
    }
    else
    {
    while(list($feld,$wert)=each($HTTP_POST_VARS))
    {
    if($feld!="abschicken")
    {
    $mailnachricht.=ucfirst($feld).": $wert\n";
    }
    }
    $mailnachricht.="\nDatum/Zeit: ";
    $mailnachricht.=date("d.m.Y H:i:s");
    $mailbetreff="Betreff: ";
    $mailbetreff.=$HTTP_POST_VARS[betreff];
    mail("PhilippWendel@gmx.de", $mailbetreff, $mailnachricht, "From: $email");
    echo "Vielen Dank für Ihre eMail!";
    }
    }
    else
    {
    echo "Ein Fehler ist aufgetreten.";
    }


    ?>


    Gruß und schonmal danke im vorraus

  • Zitat von &quot;FCSBaum&quot;


    if($abschicken)


    Hier ist wohl schon der wichtigste Fehler (den Rest habe ich mir nicht so genau angeguckt, aber das fiel auf):
    WENN abschicken WAS?
    Du brauchst in der Regel einen Vergleichswert. Du weist z.B. deiner Variable abschicken einen Wert zu beim Absenden und überprüfst dann ob der Wert in der Variable ist.


    Gruß
    Laura

  • An deinen Variablennamen stimmt was nicht.
    Du kannst, um auf die vom Formular übergebenen Variablen zugreifen zu können, nicht einfach nur den Namen benutzen (es sei denn, auf dem Server ist register_globals aktiviert).
    Auf solche Variablen wird mit $_POST['name'] zugegriffen.
    Du musst also überall, wo du auf Variablen aus dem Formular zugreifst, statt z.B.

    PHP
    <span class="syntaxdefault">$abschicken</span>
    PHP
    <span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'abschicken'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span>

    schreiben.


    Benutze nächstes mal bitte den Code-BBCode, lässt sich dann deutlich besser lesen.



    lauras: Das stimmt so nicht ganz, ohne Vergleichswert wird überprüft, ob $abschicken true ist, also nicht leer, 0 oder false ist.
    In diesem Falle würde es so funktionieren, da die Variable ja nicht existiert und somit leer ist, wenn das Formular nicht abgeschickt wurde.

  • hallo
    danke schonmal für die antworten.
    Sören meinst du das in etwas so?
    if($abschicken)
    if($_POST['abschicken'])


    kann man das so schreiben?
    Ich versteh was du meinst aber auf die schreibweise kommt es ja auch an


    danke


    gruß

  • Hallo
    auch dir danke für die Antwort
    Aber es geht noch nicht.
    Tschuldigung das ich euch nochmal nerven muss aber mit php bin ich noch nicht ganz so eingespielt.
    Habe eigentlich alle variablen abgeändert wo er auf das formular zugreift aber er sagt
    Es ist ein Fehler aufgetreten. Was ja im code beschrieben ist also keine xplizite fehlermeldung.
    Also muss ja was bei der Übertragung noch nicht hinhauen.
    Also PHP:
    <?php


    $_POST['abschicken']
    {
    $_POST['name'] || $_POST['email'] || $_POST['text']
    {
    echo "Bitte gehen Sie zur&uuml;ck und f&uuml;llen Sie alle Felder aus!";
    }
    else
    {
    while(list($feld,$wert)=each($HTTP_POST_VARS))
    {
    if($feld!="abschicken")
    {
    $mailnachricht.=ucfirst($feld).": $wert\n";
    }
    }
    $mailnachricht.="\nDatum/Zeit: ";
    $mailnachricht.=date("d.m.Y H:i:s");
    $mailbetreff="Betreff: ";
    $mailbetreff.=$HTTP_POST_VARS[betreff];
    mail("PhilippWendel@gmx.de", $mailbetreff, $mailnachricht, "From: $email");
    echo "Vielen Dank für Ihre eMail!";
    }
    }
    else
    {
    echo "Ein Fehler ist aufgetreten.";
    }


    ?>


    Gruß

  • Nein, ich hatte das mal wann anders ohne die == in der if-Abfrage, da funktionierte es nicht (deshalb mein erster Kommentar). Aber ich vermute, dass cih dann einfach irgendwo was anderes falsch gemacht hatte. :D


    Der Code den du da gekriegt hast schaut doch ganz gut aus :D

  • und was du ab sofort hier um Forum machen könntest wäre folgendes:

    PHP
    <span class="syntaxdefault"></span><span class="syntaxkeyword">[</span><span class="syntaxdefault">code</span><span class="syntaxkeyword">]</span><span class="syntaxcomment">/* Das ist mein Code */<br /></span><span class="syntaxkeyword">if(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">code </span><span class="syntaxkeyword">== </span><span class="syntaxstring">'Yours'</span><span class="syntaxkeyword">){<br />    echo </span><span class="syntaxstring">'[code]

    '</span><span class="syntaxkeyword">;<br />} else if(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">code </span><span class="syntaxkeyword">== </span><span class="syntaxstring">'PHP'</span><span class="syntaxkeyword">){<br /> echo </span><span class="syntaxstring">'

    PHP

    '</span><span class="syntaxkeyword">;<br />} else {<br /> echo </span><span class="syntaxstring">'

    Zitat

    '</span><span class="syntaxkeyword">;<br />}[/</span><span class="syntaxdefault">code</span><span class="syntaxkeyword">] </span><span class="syntaxdefault"></span>[/code]Also verwende bitte für deinen Code ab sofort den

    Code

    :wink: So bekommt dein Code eine Feste Größe, in der man Scrollen kann, es wird wie im Editor angezeigt,.. :D und mit [code=php] wird dein PHP-Code sogar gehighlited :wink:

  • Also ich versteh es nicht habe das jetzt wieder abgeändert aber es geht noch nicht.

  • Als erstes: Wie wäre es mal mit Struktur in den Code bringen? Der ist ja voll kommen unübersichtlich.


    Als nächstes fällt mir auf, dass if($_POST['name']) || if($_POST['email']) || if($_POST['text']) komplett falsch ist.
    ("in Menschliche Sprache übersetzt":)Wenn $_POST['name'] dann oder wenn $_POST['emai'] dann oder wenn $_POST['text'] dann...
    So müsste es eher aussehen:

    PHP
    <span class="syntaxdefault"></span><span class="syntaxkeyword">if(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault">  </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">||<br /></span><span class="syntaxdefault">   $_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'email'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">||<br /></span><span class="syntaxdefault">   $_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'text'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault">  </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxkeyword">)</span><span class="syntaxdefault">     </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">   </span><span class="syntaxcomment">//Dann...<br /></span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> </span>


    Als nächstes, was willst du mit folgendem Codeschnippsel bewirken?

    PHP
    <span class="syntaxdefault"></span><span class="syntaxkeyword">while(list(</span><span class="syntaxdefault">$feld</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$wert</span><span class="syntaxkeyword">)=</span><span class="syntaxdefault">each</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$HTTP_POST_VARS</span><span class="syntaxkeyword">))</span><span class="syntaxdefault"> </span>


    Richtig müsste es ungefähr so aussehen:

    PHP
    <span class="syntaxdefault"></span><span class="syntaxcomment">// Für jedes Element in $HTTP_POST_VARS soll folgender Code ausgeführt werden<br />// Der Inhalt der Variabel soll hierbei über $value, der Array-Schlüssel über $field ansprechbar sein<br /></span><span class="syntaxkeyword">foreach(</span><span class="syntaxdefault">$HTTP_POST_VARS as $value </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> $field</span><span class="syntaxkeyword">){<br /></span><span class="syntaxdefault">    $mailnachricht </span><span class="syntaxkeyword">.=</span><span class="syntaxdefault"> ucfirst</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$field</span><span class="syntaxkeyword">).</span><span class="syntaxstring">": $value\r\n"</span><span class="syntaxkeyword">;<br />}</span><span class="syntaxdefault"> </span>


    Außerdem wird, wenn man einen Wert eines Arrays will, der Schlüssel wenn er keine Zahl oder Variabel ist in Anführungszeichen gesetzt.

    Code
    $HTTP_POST_VARS['betreff']
    // beziehungsweise einfach
    $_POST['betreff']


    Bei Fragen melde dich [=


    Noch einen schönen Abend
    Sarkkan

  • hat nicht funktioniert.
    Sagt mal muss ich da nochwas einstellen?
    Ich habe nämlich meine seite auf nem freien webspace. Muss ich danoch etwas einstellen weil immer nur ein fehler auftritt


    gruß

  • Poste mal bitte deinen momentanen Code, sonst können wir ja nicht wissen, was noch falsch sein könnte.


    Das einzige, was am Webspace liegen könnte ist, dass dieser gar kein PHP unterstützt. Laufen denn anderen PHP-Skripte?

  • Ok mach ich hier ist der html code praktisch noch unverändert


    und der php code mit den Veränderungen von euch


    eigentlich sollte der Webspace PHP vertragen.


    Gruß

  • PHP
    <span class="syntaxdefault">$mailbetreff</span><span class="syntaxkeyword">.=</span><span class="syntaxdefault">$HTTP_POST_VARS</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">betreff</span><span class="syntaxkeyword">]; </span><span class="syntaxdefault"></span>


    Betreff muss in Anführungsstriche gesetzt werden.


    PHP
    <span class="syntaxdefault">        </span><span class="syntaxkeyword">foreach(</span><span class="syntaxdefault">$HTTP_POST_VARS </span><span class="syntaxkeyword">as </span><span class="syntaxdefault">$value </span><span class="syntaxkeyword">=> </span><span class="syntaxdefault">$field</span><span class="syntaxkeyword">){<br />            </span><span class="syntaxdefault">$mailnachricht </span><span class="syntaxkeyword">.= </span><span class="syntaxdefault">ucfirst</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$field</span><span class="syntaxkeyword">).</span><span class="syntaxstring">": $value\r\n"</span><span class="syntaxkeyword">;<br />        }<br />        {<br />            if(</span><span class="syntaxdefault">$feld</span><span class="syntaxkeyword">!=</span><span class="syntaxstring">"abschicken"</span><span class="syntaxkeyword">)<br />            {<br />                </span><span class="syntaxdefault">$mailnachricht</span><span class="syntaxkeyword">.=</span><span class="syntaxdefault">ucfirst</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$feld</span><span class="syntaxkeyword">).</span><span class="syntaxstring">": $wert\n"</span><span class="syntaxkeyword">;<br />            }<br />        } </span><span class="syntaxdefault"></span>


    Ich denke, die schließende und öffnende geschweifte Klammer vor der if-Abfrage müssen weg.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!