Formular - Mail kommt nicht an

  • Guten Tag zusammen,

    nachdem ich die Überprüfung meines Formulares soweit fertig habe, wird die mail auf einmal nicht mehr versandt! Ich poste mal meinen bisher geschriebenen Code:

    Ich kann keinen Fehler entdecken, vielleicht stehe ich gerade auf dem Schlauch. Leider ist es moentan nicht online verfügbar da mein Webspace gerade nicht funktioniert. Habe deshalb den kompletten Code gepostet, Emailadresse ist im Orginal natürlich korrekt gewesen, aber in öffentlichen Bereichen soll SIe nicht unbedingt stehen.

    Danke für Hinweise

    Einmal editiert, zuletzt von Programmierer (21. September 2011 um 10:05)

  • Richtig debuggen

    Man bemerkt, dass ein Skript nicht das tut, was es soll.
    Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
    Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysql_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.


    Außerdem solltest du auf die Mail-Funktion von PHP verzichten und besser eine fertige Klasse w.z.B. den phpMailer einsetzen.

    Zitieren Zitieren

  • Danke für deine ausführliche Beschreibung;-)

    Es erscheint kein Fehler(Xampp local), das Formular wird korrekt angezeigt. Auch die Fehlererzeugung funktioniert problemlos, nur sobald man senden klickt passiert gar nichts mehr.

    Bin noch relativ neu im PHP Bereich^^

    Zitat

    Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.

    Ich schätze mal das es an diesen Teil des Scripts liegen muss:

    Allerdings kann ich beim besten Willen keinen Fehler entdecken

    Zitat

    An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysql_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.

    Beschreibe das mal bitte genauer, ich versteh soviel wie Banhof??

    Zitat

    Außerdem solltest du auf die Mail-Funktion von PHP verzichten und besser eine fertige Klasse w.z.B. den phpMailer einsetzen.

    Gelesen habe ich davon auch schon desöfteren, aber ich bleibe erstmal bei der Mail Funktion. Wenn ich bessere Kenntnisse habe werde ich vielleicht auf einen PHPMailer umsteigen. Das sprengt momentan absolut meinen bisherigen Kenntnisstand.

    Danke für Antworten


  • Beschreibe das mal bitte genauer, ich versteh soviel wie Banhof??


    Mach in deinen if- und else-Bedingungen mal überall echo-Ausgaben rein, z.B. echo __LINE__."<br>";
    Dann hast du eine schöne Ausgabe der Zeilennummern im Skript und kannst genau schauen an welcher Stelle in welche Bedingung gesprungen wird und ab wo es nicht mehr wie erwartet läuft. Da kannst du dir dann Inhalte von Variablen ausgeben lassen die geprüft werden und schauen ob die erwarteten Werte drinstehen.


    PHPMailer ist wirklich sehr simpel zu verwenden, da brauchst du keine Angst vor zu haben ;)
    Hier ein simples und schnelles Tutorial dazu:
    http://phpforum.de/forum/showthread.php?t=216932
    I
    ch kann nur empfehlen direkt darauf umzusteigen.

    Ansonsten ist mir noch eine Sache aufgefallen, du solltest im form-Tag als action nicht $_SERVER['PHP_SELF'] verwenden. Nimm lieber action=""
    http://blog.oncode.info/2008/05/07/php…-scripting-xss/

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Zitat

    Mach in deinen if- und else-Bedingungen mal überall echo-Ausgaben rein, z.B. echo __LINE__."<br>";

    echo __LINE__ Was ist das denn , habe ich ja noch nie gesehen;-), ein plausibles Bsp. dazu wäre schön


    Nein ich möchte keinen PHP Mailer verwenden(vorerst), sagte ich doch schon. Es hatte schon funktioniert, nur als ich erweiterte Änderungen an den Überprüfungen vornahm verschickte er die Mail nicht mehr.
    http://isi.square7.ch

    Der Code ist wie im ersten Beitrag gepostet auf dem Server

  • echo __LINE__ Was ist das denn , habe ich ja noch nie gesehen;-), ein plausibles Bsp. dazu wäre schön


    Wäre es zuviel verlangt, diese Zeile

    PHP
    echo __LINE__."<br>";


    einfach mal in deinen Quellcode einzubauen und zu testen?


    Nein ich möchte keinen PHP Mailer verwenden(vorerst)


    Und warum nicht? Warum nicht einfach mal auf Leute hören, die sich schon deutlich länger als du mit PHP beschäftigen.

  • echo __LINE__ gibt dir die aktuelle Zeilennummer aus. Wenn das in Zeile 10 steht wird 10 ausgegeben, wenn das in Zeile 279 steht wird 279 ausgegeben.
    Wenn du also diese Ausgabe in jeden if- und else-Zweig deines Scripts packst kannst du anhand der Ausgabe ganz genau schauen wo welche Bedingungen erfüllt werden oder nicht und dann eben sehen wo es nicht mehr wie erwartetn läuft.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Ich denke mal, sowas kann man auch einem Anfänger zumuten:

  • Ein kleiner Fehler in:

    PHP
    echo 'In if(isset($_POST['senden']))<br>';


    Richtig ist

    PHP
    echo 'In if(isset($_POST[senden]))<br>';


    Sonst gibt es einen Parse-Error

  • Seht mal hier: http://isi.square7.ch/klappt_halb

    Dort ist dieser Code online, da kommt die Mail an mich an. Nur die Bestätigung an den Absender kommt nicht an. Folgender Code:

    Zitat

    Und warum nicht? Warum nicht einfach mal auf Leute hören, die sich schon deutlich länger als du mit PHP beschäftigen.


    Sag mal hab ich dir irgendwas getan? Wenn die Felder gesichert sind ist es meiner Meinung nach wurscht ob ich das so oder so mache. Ausserdem bin ich im Anfangsstadium, und ich muss mich erstmal mit PHPMailer befassen. Dies möchte ICH aber erst tun wenn das Script so erstmal korrekt läuft, dies ist hoffentlich ja mein gutes Recht auch wenn ich hier im Forum Hilfe suche. Erster Tag und man wird schon doof von der Seite angemacht:cry:

    Und jetzt seht euch das an, was in diesem Beitrag steht, lieben Dank!

  • OK, da ist mal wieder einer beratungsresistent. Dann mach' was du für richtig hälst, aber erwarte nicht, dass dir jemand weiterhilft, wenn du jeden Ratschlag sowieso in den Wind schreibst.

    Zitat


    Und jetzt seht euch das an, was in diesem Beitrag steht


    Nö, SinnlosS und ich haben dir jetzt einige Tipps zur Fehlersuche gegeben, jetzt bist du dran.

  • OK, da ist mal wieder einer beratungsresistent. Dann mach' was du für richtig hälst, aber erwarte nicht, dass dir jemand weiterhilft, wenn du jeden Ratschlag sowieso in den Wind schreibst.

    Nö, SinnlosS und ich haben dir jetzt einige Tipps zur Fehlersuche gegeben, jetzt bist du dran.

    Habe doch das Script das die Mail versendet, im letzten Beitrag gepostet und in einem seperaten Ordner auf meinen Free-Webspace hochgeladen.

    http://isi.square7.ch <-- Mail und Empfängermail werden nicht versendet

    http://isi.square7.ch/klappt_halb <-- Mail wird versendet, Empfängermail nicht

    Entschuldige bitte lieber unregistrierter, ich versuche es doch schon. Aber wenn ihr nicht mal halbwegs einen Blick draufwert und selbst seht das keine Logikfehler vorhanden sind. Da brauche ich dann auch nicht danach zu suchen, weil es für die Katz wäre.

    Und ich habe so schon große Probleme die Übersicht über dieses Script zu behalten, da jetzt noch mehr reinzuschreiben wo mich dann ganz durcheinander bringt? Das bringt es mir doch auch nicht, oder?

    Wenn ihr Hilfestellungen leisten wollt, dann solltet ihr es wenigstens einmal netterweise selbst getestet haben statt mich gleich niederzumachen:?

    Ich versuche es doch die ganze Zeit das es endlich läuft, sonst hätte ich mich hier sicher nicht angemeldet und um Hilfe gebeten!

  • Ich sehe keine, aber auch absolut gar keine Debugausgaben! Nüscht, absolut nüscht. Ich frage mich jetzt schon, warum du nicht das tust, was wir dir sagen. Ich war sogar so frei und habe dir Debugausgaben in dein Script geschrieben und du benutzt es immer noch nicht. So langsam reichts!!!

  • Nochmal:


    Entweder du testest jetzt mit dieser Version oder es ist hier und jetzt Ende der Fahnenstange erreicht.

  • Ich sehe keine, aber auch absolut gar keine Debugausgaben! Nüscht, absolut nüscht. Ich frage mich jetzt schon, warum du nicht das tust, was wir dir sagen. Ich war sogar so frei und habe dir Debugausgaben in dein Script geschrieben und du benutzt es immer noch nicht. So langsam reichts!!!

    Bitte was? Ich verstehe dich absolut nicht, ich weiß nicht wie lange du schon PHP lernst bzw kannst aber wie bitte kannst du mir was ins Script schreiben? Jetzt verstehe ich gar nichts mehr. Nunja ich versuchs weiterhin.

    Ich sage es aber noch mal bevor dieses Preg_match eingebaut war hatte alles funktioniert, Mail an mich kam an und eine Bestätigung für den Absender. Daher verstehe ich nicht, wenn kein Fehler mehr ausgegeben wird warum es nicht mehr funktioniert.

    Wollt ihr das Script noch sehen wo es ganz geklappt hat, also beide Mails versandt worden sind?


    Edit, habe deine Version nun auch noch hochgeladen --> http://isi.square7.ch/index1.php
    Erschlag**

    Müssen die Variablen also doch am Anfang initialisiert werden, gestern sagte mir ein angeblicher Programmierer es sei egal. Das wäre früher so gewsen aber heute sei es nicht mehr nötig. Magst du dazu was sagen?

    Einmal editiert, zuletzt von Programmierer (21. September 2011 um 11:26)

  • Verdammt noch mal, jetzt nehme endlich das Script, das ich dir hier reinkopiert habe und dann wird du feststellen, wo der Fehler ist!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Mensch Meier, das kann doch wohl nicht so schwer sein!

  • Schön, da fällt doch schon einiges auf, oder? Und wenn du das Formular ausfüllst, kommt wieder eine andere Meldung. Und siehe da, schon erkennt man, wo der Fehler liegen muss. Was ist daran so schwer???

    Die

    Notice: Undefined variable:

    Meldungen kommen daher, weil du im Script darauf zugreifst, die aber nur im Falle des Absendens gesetzt werden. Deine ganzen Überprüfungen und das Senden der Mails gehört in den if-Block if(isset($_POST['senden']))

  • Ich habe jetzt alle Variablen initialisiert und den ersten if Block um alles gesetzt, so:

    Jetzt kommt gar nichts mehr? http://isi.square7.ch/index1.php