Tach!
theoretisch könnte ich doch abfragen ob mehr als ein @ zeichen übergeben wurde, sprich bei 2 @ zeichen wird das script mit die() oder exit beendet.
Zwei @ wären auch verkehrt, aber sie stören in der From-Zeile nicht - sicherheitstechnisch. Wichtiger sind die Zeilenumbrüche
weis leider nicht wie ich auf zeielnumbrüche prüfen soll, bzw du meintest ich soll $email und $name auf zeilenumbrüche prüfen, was ich nicht verstehe ist, ich habe ein einzeiliges inputfeld, wenn jetzt jemand mehrere adressen reinschreibt trennt er doch nicht mit nem umbruch sondern mit nem leerzeichen oder ?
Man braucht keinen Browser, um Formulardaten an ein Script zu senden. Wenn man sie direkt sendet, kann man alles mögliche mitschicken (und da hilft auch keine Javascript-Prüfung). Das heißt, selbst wenn du ein einzeiliges Eingabefeld oder ein Select, Radiobuttons oder Checkboxen mit vorgegebenenen Werten in dein Formular einbaust, kann man dir trotzdem alles mögliche und unmögliche schicken. Eine serverseitige Prüfung ist unverzichtbar.
Auf Zeilenumbrüche zu prüfen ist nicht schwerer als auf andere Zeichen. Sie sind lediglich etwas anders zu notieren. Und du weißt bereits, dass sie als \r und \n geschrieben werden müssen. Die einfachste Prüfung wäre nun
if (strpos($name, "\r") !== false and strpos($name, "\n") !== false)
die();
Du kannst auch in dem bereits verlinkten Kontextwechsel-Artikel fündig werden. Die dortige Funktion findet auch noch andere undruckbare Zeichen, die ebenfalls nichts in einem Namen oder einer Email verloren haben.
dedlfix.