Wurde das Formular gesendet ?

Yoda

Gesperrt
Tag auch,
wenn ich ein Formular mit PHP verarbeiten will, mache ich das immer auf einer Seite, d.h. das Formular verweist immer auf die selbe Seite. Mit PHP will ich dann überprüfen ob ich die Angaben jetzt bearbeiten muss, also ob der User auf Senden (o.ä.) geklickt hat.
Bisher habe ich das meisst so gemacht:
PHP:
if($_POST['sendform'] == " Angaben Übernehmen ") { ...
Diese Variante ist jedoch sehr umständlich, da man sich verschreiben kann und ich denke es gibt bestimmt eine bessere Lösung um zu prüfen ob das Formular geysendet wurde. Hat jemand eine Idee ?
MfG Yoda
 
Du könntest die Existenz von $HTTP_POST_VARS überprüfen. Das hat bei mir immer gut funktioniert.

PHP:
if(isset($HTTP_POST_VARS))
{
    ...
}

Geht natürlich nur, wenn ausschließlich durch das Absenden des Formulars Daten per POST übergeben werden.

Gruß
Falk
 
Die Variante mit "if(isset($submit))" kann fehlerhaft sein, denn wenn ich nicht auf den Submit-Button geklickt habe sondern das Formular wenn möglich mit Enter abgeschickt habe, ist submit nicht gesetzt obwohl das Formular abgeschickt wurde. Ich würde daher ganz einfach ein Feld kontrollieren lasen ob es gesetzt ist und ein POST-Variable ist und fertig ist das ganze!
 
Im Normalfall kannst du kein Formular abschicken ohne einen Submit auszulösen.
Das liegt wohl darran das der Handleevent vom Browser auf einen Submit gerichtet ist!
Wenn du 2 Submitbuttons im Formular hast und du drückst Enter dann wird er den Submitbutton ausführen der im Formular an erster Stelle steht!.
Hab nen haufen Erfahrung damit gemacht ! :)
Natürlich kann man es auch 100% sicher machen die variante die selbst im Html-1 Standart funktioniert (wichtig bei Spielen wie Eve-Online)
in dem du ein Hiddenfield im Formular platzierst und auf seine Existens prüfst!
PHP:
<?
if(isset($isSubmit){
   ...
}
?>
<input type="hidden" name="isSubmit" value="1">
sorry aber anders wirste es nicht sicherer bekommen!
 
setzt einfach ein verstecktes feld im formular ein, zb:

<input type="hidden" name="status" value="abgeschickt">

dann kannst du in php folgendermassen überprüfen ob das formular abgeschickt wurde oder nicht:

if($status=="abgeschickt"){
//code
}
 
Verstehe das Problem gar nicht... normalerweise braucht man doch ein Formular um Daten zu senden, oder?

Wenn man doch ganz sauber mit isset() prüft, ob die Daten die man verarbeiten will da sind, hat man das ganze doch, oder?
 
Und bitte immmer dran denken, dass es auch PHP-Installationen fibt, bei denen register_globals auf off steht.
Also schön brav _POST und _GET davorschreiben :)
Wenn nicht sicher ist, ob das Formular post oder get is, kann man auch auf das Array _REQUEST zurückgreifen, das ist eine Mischung aus _POST, _GET und _COOKIE
 
Erstmal danke,
@Nuinmundo: die ganzen Superglobalen Arrays sind mir schon bekannt :), trotzdem danke für deine Mühe.
Ansonsten werde ich wohl die hiddenfeld isset() combo benutzen ;).
MfG Yoda
 
Zurück