Submit Button überprüfen
Twilo
- php
Hallo,
wie kann ich eigentlich überprüfen, ob auf ein Submit-Button geklickt wurde?
das Formular soll nur abgeschickt werden, wenn auf dem Submit-Button geklickt wurde
ein "isset($_POST['Submit'])" funktioniert nicht, wenn ich das Formular per <ENTER>-Taste abschicke, ist diese Variable mit den Wert "Karte erstellen" belegt
was hab ich noch für Möglichkeiten?
mfg
Twilo
Hello,
ein "isset($_POST['Submit'])" funktioniert nicht, wenn ich das Formular per <ENTER>-Taste abschicke, ist diese Variable mit den Wert "Karte erstellen" belegt
<form action="#">
<input type="hidden" name="submit" value="enter">
<input type="submit" name="submit" value="senden">
</form>
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi,
wie kann ich eigentlich überprüfen, ob auf ein Submit-Button geklickt wurde?
das Formular soll nur abgeschickt werden, wenn auf dem Submit-Button geklickt wurde
ein "isset($_POST['Submit'])" funktioniert nicht,
Du willst serverseitig verhindern, daß das Formular vom Client abgeschickt wird?
Wie soll das gehen?
Die serverseitige Prüfung kann erst stattfinden, nachdem das Formular nicht nur vom Client abgeschickt, sondern auch vom Server empfangen wurde.
Damit kannst Du also serverseitig gar nicht mehr verhindern, daß das Formular abgeschickt wird.
cu,
Andreas
Hello,
Du willst serverseitig verhindern, daß das Formular vom Client abgeschickt wird?
Also genau verstanden habe ich seine Frage auch nicht, aber vielleicht war die auch gar nicht genau. Deshalb habe ich es erstmla mit einer ungefähren Antwort versucht. Die könnte doch schließlichz eine große Chance haben, den Denkbreich des Fragestellers entsprechend zu lenken und ggf. einzuschränken.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
wie kann ich eigentlich überprüfen, ob auf ein Submit-Button geklickt wurde?
das Formular soll nur abgeschickt werden, wenn auf dem Submit-Button geklickt wurde
ein "isset($_POST['Submit'])" funktioniert nicht,
Du willst serverseitig verhindern, daß das Formular vom Client abgeschickt wird?
Wie soll das gehen?
Die serverseitige Prüfung kann erst stattfinden, nachdem das Formular nicht nur vom Client abgeschickt, sondern auch vom Server empfangen wurde.
Damit kannst Du also serverseitig gar nicht mehr verhindern, daß das Formular abgeschickt wird.
das Formular kann schon abgeschickt werden, soll aber nicht verarbeitet werden
ich will mit PHP prüfen, ob der Submit Button benutzt wurde.
Die meissten User drücken im Eingabefeld ein <ENTER> damit wird das Formular schon abgeschickt, das möchten die aber nicht... ich will dann halt mit PHP das Formular wieder anzeigen, nur mit den geänderten Werten
mfg
Twilo
Hi Twilo,
das Formular kann schon abgeschickt werden, soll aber nicht verarbeitet werden
ich will mit PHP prüfen, ob der Submit Button benutzt wurde.
Die meissten User drücken im Eingabefeld ein <ENTER> damit wird das Formular schon abgeschickt, das möchten die aber nicht...
Damit würdest du aber den gewohnten Umgang mit Formularen ganz schön vergewaltigen. Denn ich empfinde es als völlig normal, ein Formular durch Drücken der Enter-Taste abzuschicken.
Übrigens betrachtet auch der Browser das Drücken von Enter als gleichwertig mit einem Klick auf den Submit-Button, und er übermittelt das beim Absenden auch so. Nur wenn das Formular mehrere Submits enthält, verhalten sich die Browser unterschiedlich: Der eine wählt als Default den ersten Submit-Button aus, der andere den letzten...
Wenn du also zwischen Tastendruck und Button-Klick unterscheiden willst, musst du das wohl oder übel schon clientseitig machen, etwa mit Javascript. Die Einschränkungen und Nachteile einer solchen Lösung findest du haufenweise hier.
So long,
Martin
hi,
Übrigens betrachtet auch der Browser das Drücken von Enter als gleichwertig mit einem Klick auf den Submit-Button, und er übermittelt das beim Absenden auch so.
nein, dem ist nicht so.
wenn du das formular per enter abschickst, werden name und value des submit-buttons nicht mit übermittelt.
gruß,
wahsaga
Hallo,
Übrigens betrachtet auch der Browser das Drücken von Enter als gleichwertig mit einem Klick auf den Submit-Button, und er übermittelt das beim Absenden auch so.
nein, dem ist nicht so.
wenn du das formular per enter abschickst, werden name und value des submit-buttons nicht mit übermittelt.
wenn ich mir print_r($_POST) ausgeben lasse, wird auch der Submit Button samt value übergeben
wie machst du das, dass der Submit-Button nicht übermittelt wird?
wenn ich im IE auf <ENTER> klicke, erhält der Submit-Button auch den Focus
mfg
Twilo
hi,
wenn ich mir print_r($_POST) ausgeben lasse, wird auch der Submit Button samt value übergeben
stimmt, hast recht.
da hatte ich wohl etwas falsches in erinnerung ...
wenn ich im IE auf <ENTER> klicke
maus nehmen, und damit auf die tastatur drücken ...? ;-)
gruß,
wahsaga
n'Abend wahsaga...
wenn ich im IE auf <ENTER> klicke
maus nehmen, und damit auf die tastatur drücken ...? ;-)
*rofl*
Nicht übel! Ich hab gerade versucht, mir das bildlich vorzustellen...
Ciao,
Martin
Hast du schon mal versucht mehrere <button type="submit" ...> im IE(!) zu verwenden und herauszufinden, welcher zum Absenden verwendet wurde?
Viel Spaß! :-)
Hast du schon mal versucht mehrere <button type="submit" ...> im IE(!) zu verwenden und herauszufinden, welcher zum Absenden verwendet wurde?
Ähm... ich ziehe meine Frage zurück...
Hallo,
Hast du schon mal versucht mehrere <button type="submit" ...> im IE(!) zu verwenden und herauszufinden, welcher zum Absenden verwendet wurde?
Nee, warum auch?
<button type="submit" ...> ? Bist du sicher, dass du das gemeint hast?
Ich habe aber schon mehrere <input type="submit" ...> verwendet, da gibt's keine Probleme. Der IE übermittelt brav das value-Attribut des verwendeten Submit-Buttons.
Viel Spaß! :-)
Danke, hab ich gehabt. .-)
Ciao,
Martin
hi,
<button type="submit" ...> ? Bist du sicher, dass du das gemeint hast?
Ich habe aber schon mehrere <input type="submit" ...> verwendet, da gibt's keine Probleme. Der IE übermittelt brav das value-Attribut des verwendeten Submit-Buttons.
ja, aber eben nicht bei <button ...>
wenn du dem in dedlfix' folgeposting verlinkten thread gefolgt wärst, wüsstest du das jetzt auch.
gruß,
wahsaga
Hallo,
Ich habe aber schon mehrere <input type="submit" ...> verwendet, da gibt's keine Probleme. Der IE übermittelt brav das value-Attribut des verwendeten Submit-Buttons.
ja, aber eben nicht bei <button ...>
Jaja, meinetwegen...
wenn du dem in dedlfix' folgeposting verlinkten thread gefolgt wärst, wüsstest du das jetzt auch.
Ich bin dem Link tatsächlich gefolgt - und hab mich gefragt, wieso jemand sowas machen sollte: Einen <button> für ein einfaches Submit verwenden, obwohl es dafür doch den "normalen" Submit-Button gibt? Nur damit's komplizierter ist?
Also ich habe <button>s bisher nur verwendet, wenn ich mit einem onclick-Handler sofort clientseitig irgendeine Aktion auslösen wollte. Aber gewiss nicht, um ein Formular abzuschicken.
So long,
Martin
Ich bin dem Link tatsächlich gefolgt - und hab mich gefragt, wieso jemand sowas machen sollte: Einen <button> für ein einfaches Submit verwenden, obwohl es dafür doch den "normalen" Submit-Button gibt? Nur damit's komplizierter ist?
Nein, weil <button> ein paar mehr Gestaltungsmöglichkeiten als <input type=submit/reset/button/image> bietet.
Also ich habe <button>s bisher nur verwendet, wenn ich mit einem onclick-Handler sofort clientseitig irgendeine Aktion auslösen wollte. Aber gewiss nicht, um ein Formular abzuschicken.
Dann kannst du auch <input type=button> nehmen.
Hello,
Hast du schon mal versucht mehrere <button type="submit" ...> im IE(!) zu verwenden und herauszufinden, welcher zum Absenden verwendet wurde?
Und hat das denn nun schon einmal jemand nachgemacht in einem anderen Browser, als dem IE5.5?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Submit</TITLE>
</HEAD>
<BODY>
<form action="http://selfhtml.bitworks.de/debug/kontrolle.php" method="post">
<input type="text" name="feld1"><br />
<input type="hidden" name="submit" value="return"><br />
<input type="submit" name="submit" value="senden"><br />
</form>
</BODY>
</HTML>
Funktioniert natürlich nur als "This Bug is a Feature"[tm] bei PHP, weil der gleichnamige Hidden-Paramter beim Senden mittels Button überschrieben wird.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hast du schon mal versucht mehrere <button type="submit" ...> im IE(!) zu verwenden und herauszufinden, welcher zum Absenden verwendet wurde?
Und hat das denn nun schon einmal jemand nachgemacht in einem anderen Browser, als dem IE5.5?
<input type=submit>
IE 6 tut wie du es erwartest. Enter = return, Klick = senden.
FF (1.0.1) sendet beim Entern "senden". Bei mehreren submits mit gleichem name und unterschiedlichem value wird auch der erste value gesendet.
<button type=submit>
Das Problem im IE ist nicht der eine sondern das Unterscheiden von mehreren <button>s.
Zum einen sendet er nicht den value sondern den HTML-Code der zwischen <button> und </button> steht.
Zum anderen sendet der IE immer alle button-Inhalte egal ob geentert oder der eine oder der andere geklickt wurde. Gleiche names überschreibt PHP, so dass du dann immer den letzten Button-Inhalt bekommst.
Der beste Workaround ist dann immer noch dieser (meiner Meinung nach):
<input type="hidden" name="submit" value="return">
<button type="submit" onclick="name='submit';value='button1'">foo</button>
<button type="submit" onclick="name='submit';value='button2'">bar</button>
Hello,
Der beste Workaround ist dann immer noch dieser (meiner Meinung nach):
<input type="hidden" name="submit" value="return">
<button type="submit" onclick="name='submit';value='button1'">foo</button>
<button type="submit" onclick="name='submit';value='button2'">bar</button>
Welche Eigenschaft 'name' und 'value' sollen hier verändert werden?
Und abschicken müsstest Du das Form auch noch, oder?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Der beste Workaround ist dann immer noch dieser (meiner Meinung nach):
<input type="hidden" name="submit" value="return">
<button type="submit" onclick="name='submit';value='button1'">foo</button>
<button type="submit" onclick="name='submit';value='button2'">bar</button>Welche Eigenschaft 'name' und 'value' sollen hier verändert werden?
die vom jeweiligen button-Element.
Und abschicken müsstest Du das Form auch noch, oder?
Da das onclick kein false zurückliefert passiert das auch.
Hello,
Der beste Workaround ist dann immer noch dieser (meiner Meinung nach):
<input type="hidden" name="submit" value="return">
<button type="submit" onclick="name='submit';value='button1'">foo</button>
<button type="submit" onclick="name='submit';value='button2'">bar</button>Welche Eigenschaft 'name' und 'value' sollen hier verändert werden?
die vom jeweiligen button-Element.
Und abschicken müsstest Du das Form auch noch, oder?
Da das onclick kein false zurückliefert passiert das auch.
Oh ja. Du hast ja type="submit" für den Button angegeben. Das habe ich eben übershen.
Funktioniert denn diese "verkürzte Schreibweise", also ohne die Selbstreferenz (this) überall?
Ich erweitere als auf:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Submit</TITLE>
</HEAD>
<BODY>
<form action="http://selfhtml.bitworks.de/debug/kontrolle.php" method="post">
<input type="text" name="feld1"><br />
<input type="hidden" name="submit" value="return"><br />
<input type="submit" name="submit" value="senden"><br />
<button type="submit" onclick="name='submit';value='button2'"><img src="click.gif"></button>
</form>
</BODY>
</HTML>
Der Effekt, dass das Dokument dann kurz vor dem Absenden noch 'zusammenbricht', gefällt mit allerdings nicht.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Funktioniert denn diese "verkürzte Schreibweise", also ohne die Selbstreferenz (this) überall?
Im IE und FF geht das. (Warum man this weglassen kann, hab ich grad keine Erklärung gefunden.)
FF sendet bei Enter den ersten type=submit, egal ob das ein <button> oder ein <input> ist.
Der Effekt, dass das Dokument dann kurz vor dem Absenden noch 'zusammenbricht', gefällt mit allerdings nicht.
Dann musst du wohl auf das value verzichten und statt dessen einen eindeutigen Namen nehmen.