php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS Probleme mit HTML5, Bootstrap oder jQuery ?

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 22-06-2012, 10:55
sallow2001
 Registrierter Benutzer
Links : Onlinestatus : sallow2001 ist offline
Registriert seit: Oct 2010
Beiträge: 103
sallow2001 ist zur Zeit noch ein unbeschriebenes Blatt
Standard [Gelöst] Buttonname trotz disabled

Hallo.

Ich brauche in einem Form 2 Buttons.

Da die Benutzer ständig doppelt auf Buttons klicken, wird das Form 2x abgeschickt und ich erhalte doppelte Einträge in der DB.

Also schalte ich den jew. gedrückten Button nach dem Klick einfach ab.

Und hier klemmt es nun, denn wenn ich this.disabled=true; setze, wird mir der Button-Name nicht mehr übermittelt und ich weiß nicht, welchen Button sie gedrückt haben.

Hier mal ein minimalistisches Beispiel buttontest.php:
PHP-Code:
<?php
print_r
($_POST);
echo 
"<form name='buttontest' action='buttontest.php' method='post'>";
echo 
"<input type='submit' name='buttoneins' id='buttoneins' value='Button 1 (disabled)' onclick='this.disabled=true;document.buttontest.submit();'>";
echo 
"<input type='submit' name='buttonzwei' id='buttonzwei' value='Button 2' onclick='document.buttontest.submit();'>";
echo 
"</form>";
?>
"buttoneins" wird nie übermittelt.
(Im obigen Beispiel wird Button 2 nicht abgeschaltet. Im richtigen Skript natürlich schon, sonst wäre es ja auch einfach zu unterschieden, welcher Button gedrückt wurde. )

Wie bekomme ich es nun hin, dass ich
1. weiß, welcher Button gedrückt wurde
2. wg. des Doppelklicks keine doppelten Einträge mehr bekomme?

cya

Geändert von sallow2001 (22-06-2012 um 12:08 Uhr) Grund: Lösung selber gefunden
Mit Zitat antworten
  #2 (permalink)  
Alt 22-06-2012, 12:13
sallow2001
 Registrierter Benutzer
Links : Onlinestatus : sallow2001 ist offline
Registriert seit: Oct 2010
Beiträge: 103
sallow2001 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hab's geschafft. Falls auch mal jemand vor diesem Problem steht, hier eine Lösung:

PHP-Code:
<?php
sleep
(1);
if (isset(
$_POST['buttonpressed1']))
{
   echo 
"Button 1 wurde gedrueckt.<br>\n";
}
if (isset(
$_POST['buttonpressed2']))
{
   echo 
"Button 2 wurde gedrueckt.<br>\n";
}
echo 
"<form name='buttontest' action='buttontest.php' method='post'>\n";
echo 
"<input type='submit' name='buttoneins' id='buttoneins' value='Button 1' onclick='document.getElementById(\"buttonpressed1\").checked=true; document.getElementById(\"buttonzwei\").disabled=true; this.disabled=true; document.buttontest.submit(); '>\n";
echo 
"<input type='submit' name='buttonzwei' id='buttonzwei' value='Button 2' onclick='document.getElementById(\"buttonpressed2\").checked=true; document.getElementById(\"buttoneins\").disabled=true; this.disabled=true; document.buttontest.submit(); '>\n";
echo 
"<input type='checkbox' name='buttonpressed1' id='buttonpressed1' style='display:none;' value=''>\n";
echo 
"<input type='checkbox' name='buttonpressed2' id='buttonpressed2' style='display:none;' value=''>\n";
echo 
"</form>\n";
?>
sleep() ist drin, damit man beim Testen sieht, dass die Buttons wirklich disabled werden. Sonst geht's halt zu schnell.

Beim onclick setze ich den Wert einer Checkbox (die aber unsichtbar ist), dessen Wert per POST übermittelt wird.

Also kann ich anhand des Checkbox-Wertes bzw. -Namens ermitteln, welcher Button gedrückt wurde.

Erfolgreich getestet im FF 13.0.1 und IE8
EDIT: Im IE9 und SRWare Iron 17.0.x geht's auch.
(Hatte ich nicht anders erwartet, aber man muss es ja mal getestet haben. )

cya

Geändert von sallow2001 (22-06-2012 um 12:26 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 22-06-2012, 12:45
streuner
 Registrierter Benutzer
Links : Onlinestatus : streuner ist offline
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 623
streuner ist zur Zeit noch ein unbeschriebenes Blatt
Standard

...und wenn ich JavaScript deaktiviere, geht's nicht mehr

mfg streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
Mit Zitat antworten
  #4 (permalink)  
Alt 22-06-2012, 12:52
sallow2001
 Registrierter Benutzer
Links : Onlinestatus : sallow2001 ist offline
Registriert seit: Oct 2010
Beiträge: 103
sallow2001 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das ist irgendwie klar, oder?

cya
Mit Zitat antworten
  #5 (permalink)  
Alt 23-06-2012, 16:25
sallow2001
 Registrierter Benutzer
Links : Onlinestatus : sallow2001 ist offline
Registriert seit: Oct 2010
Beiträge: 103
sallow2001 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich dachte, Du hättest jetzt einen Alternativ-Vorschlag für mich (uns), wie man das ohne JavaScript und ohne Client-Zusatzsoftware realisieren kann?

cya
Mit Zitat antworten
  #6 (permalink)  
Alt 23-06-2012, 16:48
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Warum kennzeichnest du das Formular nicht mit einem eindeutigen Token, der nur einmalig gültig ist? Dann kann der Benutzer das Formular 100mal absenden, wird es nur beim ersten mal etwas bewirken.
Mit Zitat antworten
  #7 (permalink)  
Alt 23-06-2012, 17:30
sallow2001
 Registrierter Benutzer
Links : Onlinestatus : sallow2001 ist offline
Registriert seit: Oct 2010
Beiträge: 103
sallow2001 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Um sich gegen einen Angreifer zu wehren, ist ein Token eine gute Wahl, doch für den LIVE-Betrieb mit Usern wohl eher nicht zu empfehlen.

Angenommen, ich statte das Formular mit einem Token aus.

a)
Der Benutzer füllt das Formular aus

b)
Der klickt 1x auf den Button

c)
Das Form wird ans Skript geschickt, das Skript prüft den (das?) Token, löscht ihn bzw. macht ihn ungültig und am Ende kommt die Meldung "Speicherung erfolgreich" (oder was auch immer das Skript machen sollte)
Alles in Butter.

Aber:
Nach dem ersten Klick wird ja der Token ungültig gemacht, so dass die Gültigkeitsprüfung beim 2. Aufruf (also durch den 2. Klick) einen Fehler verursachen würde. (Fehlermeldung, weiße Seite, whatever)

Das heißt, dass der Benutzer ständig in eine Fehlermeldung rennen wird, weil er zu blöd ist (sorry, ist leider so) zu verstehen, dass man Buttons nur einmal anklicken muss.

Die Folge ist: Mein Telefon läuft heiß und mein Auftraggeber bekommt einen Wutanfall, weil seine Leute nicht effektiv arbeiten können.

Oder sehe ich das Szenario falsch?

cya
Mit Zitat antworten
  #8 (permalink)  
Alt 23-06-2012, 17:34
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Richtig. Optimal wäre eine clientseitige Lösung mittels JavaScript um eine bessere Deppensi... ähh... Usability zu gewährleisten, sowie eine serverseitige Lösung, um mutwilligen Mehrfachversand bzw. Clients ohne JavaScript abzufangen.
Mit Zitat antworten
  #9 (permalink)  
Alt 23-06-2012, 17:51
sallow2001
 Registrierter Benutzer
Links : Onlinestatus : sallow2001 ist offline
Registriert seit: Oct 2010
Beiträge: 103
sallow2001 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Mutwillig klickt bei mir niemand drauf (bekannter Benutzerkreis). Das sind nur User, die das System benutzen wollen/müssen...nur sind sie manchmal halt etwas deppert.

cya
Mit Zitat antworten
  #10 (permalink)  
Alt 23-06-2012, 19:42
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Na dann zerstöre den Token halt nicht, sondern deklariere ihn nur als bereits verarbeitet – und wenn er zum zweiten Mal verwendet wird, gibst du eine Meldung aus, dass die Daten bereits gespeichert wurden … zusammen mit der clientseitigen Doppel-Abschick-Sperre sollte das doch wohl das Höchstmaß an Komfort bieten, das man als Deppennutzer erwarten darf.

(Das Vorhalten der Tokens muss natürlich nicht bis in alle Ewigkeit erfolgen, für einen begrenzten Zeitraum reicht aus.)
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #11 (permalink)  
Alt 23-06-2012, 19:56
sallow2001
 Registrierter Benutzer
Links : Onlinestatus : sallow2001 ist offline
Registriert seit: Oct 2010
Beiträge: 103
sallow2001 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich will ja nicht gegenreden, aber....

Zitat:
Zitat von wahsaga Beitrag anzeigen
dass die Daten bereits gespeichert wurden …
...was ist, wenn sie nicht gespeichert wurden, weil ein Fehler bei der Eingabe vorlag? (bspw. Feld nicht ausgefüllt)

Was soll ich dann anzeigen. "Fehler passiert, aber weiß nicht mehr, welcher"? Oder soll ich die "alte" Fehlermeldung auch noch mitschleppen und alles merken, was gut und was schiefgelaufen ist? (Daten gespeichert, Mail geschickt, interne Nachricht abgesetzt,...)

Nee, sorry, da sehe ich den Aufwand/Nutzen von Tokens nicht.

cy
Mit Zitat antworten
  #12 (permalink)  
Alt 23-06-2012, 20:02
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sallow2001 Beitrag anzeigen
...was ist, wenn sie nicht gespeichert wurden, weil ein Fehler bei der Eingabe vorlag? (bspw. Feld nicht ausgefüllt)
Dann kennzeichnest du das Token selbstverständlich noch nicht als benutzt …

Und das bei fehlerhafter Validierung das ganze in Affenformular-Manier erneut vorgelegt wird, sollte eh selbstverständlich sein.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #13 (permalink)  
Alt 23-06-2012, 20:17
sallow2001
 Registrierter Benutzer
Links : Onlinestatus : sallow2001 ist offline
Registriert seit: Oct 2010
Beiträge: 103
sallow2001 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von wahsaga Beitrag anzeigen
Dann kennzeichnest du das Token selbstverständlich noch nicht als benutzt …
Aber trotzdem müsste ich mir beim 1. Klick merken, dass das Formular bereits abgeschickt wurde, denn sonst käme ich beim 2. Klick in einen Teufelskreis.

Zitat:
Zitat von wahsaga Beitrag anzeigen
Und das bei fehlerhafter Validierung das ganze in Affenformular-Manier erneut vorgelegt wird, sollte eh selbstverständlich sein.
Affenformular-Manier? Sorry, das sagt mir nichts. Was ist das?

cya
Mit Zitat antworten
  #14 (permalink)  
Alt 23-06-2012, 20:21
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sallow2001 Beitrag anzeigen
Aber trotzdem müsste ich mir beim 1. Klick merken, dass das Formular bereits abgeschickt wurde, denn sonst käme ich beim 2. Klick in einen Teufelskreis.
Warum?

Zitat:
Zitat von sallow2001 Beitrag anzeigen
Affenformular-Manier? Sorry, das sagt mir nichts. Was ist das?
Affenformular ? Wikipedia
Mit Zitat antworten
  #15 (permalink)  
Alt 23-06-2012, 20:24
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sallow2001 Beitrag anzeigen
Aber trotzdem müsste ich mir beim 1. Klick merken, dass das Formular bereits abgeschickt wurde, denn sonst käme ich beim 2. Klick in einen Teufelskreis.
Wieso? Nicht erfolgreich validierte Daten werden nicht in die DB eingetragen, und der Benutzer zum Nachbessern aufgefordert – ganz egal, ob er sie zum ersten oder dreiunfünzigsten Mal abgeschickt hat.

(Damit er nicht umsonst abschickt, wenn die Daten noch gar nicht vollständig sind, können die neuen HTML5-Attribute für Formularelemente sowie JavaScript zum Einsatz kommen.)
Zitat:
Affenformular-Manier? Sorry, das sagt mir nichts. Was ist das?
:seufz: http://www.google.com/search?q=affenformular
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
InnoDB ist disabled Kisi Fragen zu Installation & Konfiguration (LAMP, WAMP & Co.) 5 13-05-2006 12:32
textfeld, disabled, zurückbutton bajana HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 1 21-11-2005 13:42
button ---> disabled shehrazade HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 11 26-10-2005 17:16
Javascript disabled toxiclein HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 4 29-08-2005 12:03
Disabled Form-Felder MoRtAlAn PHP Developer Forum 2 21-02-2002 14:37

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:02 Uhr.