Formular - Mail kommt nicht an

  • habe dann weiter unten gelesen man soll $GLOBALS(name); verwenden


    Das hast du falsch verstanden, $GLOBALS wird da innerhalb einer Funktion benutzt. Aber eine goldene Regel lautet: Finger weg von Globals

  • Mir ist eh aufgefallen das es nix bringt, denn selbst wenn die Felder nach Absenden leer werden, und man neu lädt kommt trotzdem gleiche mail nochmal an. Muss wohl irgendwo noch gespeichert sein. Hätte mal gleich auf dich hören sollen:oops:

    Aber als ich da nach gelesen habe: php mehrfaches absenden formular verhindern in Google steht überall was mit DB ich benutze ja keine..

  • Die einfachste Lösung ist das Weiterleiten auf eine andere Seite. Wenn das Script fehlerfrei durchlaufen ist und die Mails raus sind, einfach auf eine Seite, z.B. thx.html weiterleiten, in der halt nur

    <p>Ihre Nachricht wurde erfolgreich versandt!</p>

    steht. Aber wenn du das machen willst, musst du noch etwas am Script umbauen. Der HTML-Teil am Anfang wird dir Probleme machen, verschiebe diesen hinter den PHP-Teil. Ansonsten gibt's nämlich die schöne Meldung "headers already sent"

  • Zitat

    Aber wenn du das machen willst, musst du noch etwas am Script umbauen. Der HTML-Teil am Anfang wird dir Probleme machen, verschiebe diesen hinter den PHP-Teil. Ansonsten gibt's nämlich die schöne Meldung "headers already sent"

    ah das habe ich schon versucht mit header('Location: index.php') allerdings auf selbe Seite. Muss mal probieren, schreib dann wenns geklappt hat.. Danke lieber unbekannter:lol::lol:

    Wenigstens verstehe ich deine Erklärungen was ich sonst oft nicht raff, kapier ich auf einmal^^

  • Gib mir 5-8Minuten ich schaff das;-)

    mmmh zum Glück habe ich es in einem anderen Ordner gemacht, damit das funktionierende Orginal noch da ist.

    So sieht mein Code jetzt aus, aber die Felder werden nicht mehr leer und die Mail kommt nicht mehr an? Zu sehen unter Kontakt1

    3 Mal editiert, zuletzt von Programmierer (21. September 2011 um 18:20)

  • fertisch;-) siehe #46 Jop teilweise denn jetzt kommt iweder keine Mail mehr an.. Zu früh gefreut!

    Nachtrag: Mist jetzt funktionieren beide nicht mehr, hab wohl irgendwas überschrieben. zum Glück habe ich heute mittag ein Backup erstellt...puuh bin ich froh

    2 Mal editiert, zuletzt von Programmierer (21. September 2011 um 18:02)

  • Wird denn weitergeleitet? Und nach der Header-Zeile solltest du noch ein exit; einbauen.

    Außerdem sollte man bei einer Weiterleitung eine vollständige Url angeben. Um aufs gleiche Script zu kommen:

    PHP
    header("Location: http://" . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];
    exit;
  • Mist selbst mein Backup von heute mittag wo funktioniert hat, geht jetzt nicht mehr. Nix geändert!!!

    Weitergeleitet, ja weiß nicht. Ist ja selbe Datei(index.php), werde das nochmal umbauen kurz hoffe ich. Momentan habe ich keins mehr das funktioniert.

  • Dann schreibe mal:

    PHP
    header("Location: http://" . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'] . "?mail=send"; 
    exit;


    Dann siehst du anhand der URL im Browser, ob du weitergeleitet wurdest.

  • habe es jetzt so:

    Zitat

    Parse error: syntax error, unexpected ';' in /users/isi/www/kontakt1/index.php on line 59

    Bitte schimpf nicht wieder, kann keinen Fehler entdecken:? aber wenn ich zeile 59 auskommentiere dann gehts wieder

    http://isi.square7.ch/kontakt/

    2 Mal editiert, zuletzt von Programmierer (21. September 2011 um 18:20)

  • 1. header("Location: http://" . $_SERVER['HTTP_HOST'] . $_SERVER['index.php'];
    habe ich nie geschrieben
    2. header("Location: http://" . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'] . "?mail=send");
    Da fehlte die schließende Klammer

  • Jetzt kommt zwar die Mail wieder an, aber: Es kann trotzdem durch drücken von F5 erneut versenden werden. Habe heute zwar derbe viel gelernt in der Praxis, aber wird wohl noch einige Zeit dauern bis ich ganz dahintersteige.

    http://isi.square7.ch/kontakt/index.php

  • Ich sehe gerade, dass so ja nur weitergeleitet wird, wenn eine Kopie geschickt wird, deshalb die header und exit-Anweisung statt

    $gesendet = '<p>Ihre Nachricht wurde erfolgreich versandt!</p>';

    schreiben, denn dieseZeile brauchst du dann ja eh nicht mehr. Außerdem habe ich die header-Zeile noch mal verändert, richtig hinsehen musst du schon.

  • Jetzt werden die Felder nach Senden leer, es kommt aber keine email an. Und der Benutzer bekommt auch die Meldung nicht Nachricht wurde versandt.

    http://isi.square7.ch/kontakt/

    Ich glaub stell mich auch bissle doof an, kann das sein

  • Jop(http://isi.square7.ch/kontakt/index.php?mail=send), aber es kommt keine Meldung Nachricht wurde versandt und die Mail kommt leider leider auch nicht mehr an.

    Sorry doch jetzt kommen sie wieder an, jetzt nur noch die nachricht für den Benutzer. Aber hab in dem Teil ja nix geändert

    2 Mal editiert, zuletzt von Programmierer (21. September 2011 um 18:34)

  • Ahh, ich sehe gerade, dass die Url richtig ist und weitergeleitet wurde. Mit F5 passiert jetzt auch nicht mehr.

    Schreibe jetzt noch vor

    PHP
    if(isset($_POST['senden']))
    PHP
    $gesendet = isset($_GET['mail']) ? '<p>Ihre Nachricht wurde erfolgreich versandt!</p>' : '';
  • Mit dem Ankommen der Mails wäre ich sowieso vorsichtig. Manche Hoster blocken mehrfachen Mail-Versand per Script. Da kann es durchaus mal passieren, das eine Mail garnicht oder erst verspätet ankommt. Auch da kann der phpMailer helfen, wenn man Mails per SMTP versendet.

    Und nochwas, du benutzt einen HTML5-Doctype, darauf würde ich aktuell noch verzichtem und besser einen HTML4-Doctype nehmen: http://de.selfhtml.org/html/allgemein…htm#dokumenttyp