dedlfix: Fehler in PHP Kontaktformular

Beitrag lesen

Tach!

echo "In deiner E-Mail Adresse gibt es einen Fehler";


> Rein technisch gesehen, kannst du das anhand deiner Prüfung nicht wissen. localhost wäre auch eine gültige email-Adresse und enthält weder ein "@" noch ein ".".  
  
Rein praktisch gesehen, kommen lokale Adressen bei einem Kontaktformular nur ganz selten vor. Die Prüfung ist jedoch trotzdem nicht so wahnsinnig nützlich, weil mit Syntaxprüfungen allein die Gültigkeit von Adressen nicht festgestellt werden kann.  
  

> > ~~~php
  

> >    $from = "'$email'";  
> > 

´´Um eine E-Mail zu senden, muss die E-Mail einen From-Header enthalten.``

Bei dir steht allerdings ein ungefilterter String in einfachen Anführungszeichen. Ein offenes Tor für Spambots. Es ist ganz einfach möglich, dass der Benutzer weitere Header sendet. Du solltest also zumindest dringend Zeilenumbrüche (\r und \n) filtern.

Wenn \r oder \n in solchen in Header einzufügenden Daten vorkommen, kann man das Script kommentarlos beenden. Ein Spam-Bot interessiert sich nicht für korrekte HTML-Syntax oder eine Fehlermeldung. Er muss einfach nur an seinem Tun gehindert werden.

Ich hoffe das evtl. hier jemand sieht was ich falsch gemacht habe, der Fehler ist dass immer die Fehler meldung kommt also die oberen Prüfungen scheinen alle soweit korrekt ausgeführt zu werden.

Dass das Script im "Fehler" endet, liegt vermutlich nicht an der Datenverarbeitung des Scripts. Und man muss sich auch nicht auf den Schein verlassen, man kann die Werte auch mit einer Kontrollausgabe prüfen. Dass das Script im "Fehler"-Zweig landet liegt am Rückgabewert von mail() - auch den kann man sich anzeigen lassen: var_dump($mailfunction); - Und dann schaut man im Handbuch nach, wann mail() mit false antwortet: wenn es die Mail nicht senden konnte. Der Hauptgrund dafür ist meist ein nicht richtig konfiguriertes System (PHP findet den MTA (Mail Transfer Agent) nicht).

dedlfix.