Hallo borisbaer,
Oftmals sind POST-Werte doch aber auch leer.
Ja. Ein Button mit name, aber ohne value, führt im $_POST Array zu einem Eintrag mit leerem Inhalt. isset()
prüft, ob der Eintrag da ist, aber nicht, ob er auch Inhalt hat. Dafür würde man !empty()
verwenden.
<button name="sign-in">einloggen</button>
Das kann man so machen, vor allem, wenn es nur einen Button gibt. Bei zwei Buttons kann man entweder verschiedene Namen wählen oder einen Namen mit verschiedenen value-Attributen.
Ob man Script-Kiddies damit scheitern lassen kann, einem Button außer einem name auch einen value zu geben? Ich weiß es nicht. Bei einem <input type="submit">
muss man ja einen Value haben, weil das der einzige Weg ist, dem Button einen Text zu geben. Beim <button>
Element ist das nicht nötig, da werden value und Text getrennt gesetzt.
Mit sende_formular() meinst du, dass man zurück auf die Seite, auf der sich das Formular befindet, weitergeleitet wird?
So, wie RW das geschrieben hat, ist sende_formular() der GET Zweig. Affenformulare verwenden ja für GET und POST die gleiche URL, deswegen muss das PHP Script erkennen, für welches Verb es verwendet wird. Weswegen es ja auch meine Empfehlung ist, $_SERVER['REQUEST_METHOD'] dafür abzufragen. Der Grund ist: Wenn ich wissen will, ob ich einen POST bekomme, dann prüfe ich das, und nicht etwas anderes, aus dem sich indirekt ergibt, dass ein POST vorliegt.
Denn letztlich interessiert Dich ja gar nicht, ob sign-in gesetzt ist. Dich interessiert:
- Wurde gepostet
- Sind die Formularfelder ausgefüllt
Ob die Abfrage, ob der Name des Submit-Buttons mitgeschickt wurde, zusätzliche Sicherheit bietet? Höchstens dann, wenn man damit vermeiden kann, dass xy.php seine Daten irrtümlich auf yz.php POSTet. Wenn jemand bösartig ist, dann ist diese Abfrage kein Hinternis.
Just my 0,0391 Pfennige
Rolf
--
sumpsi - posui - obstruxi