HTML "required" Input
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
anmeldung
attribut
bild
button
code
element
email
fehler
formular
funktionieren
input
klasse
leute
mannschaft
paar
problem
setzen
tag
validierung
verwenden
-
Hallo Community,
ich habe mal wieder ein Anliegen und hoffe auf die Schwarmintelligenz, sodass mir jemand helfen kann.
Folgendes Szenario: Meine Seite ist Online, neue Turniere sind eingestellt und die ersten tag/anmeldung">Anmeldungen sind bereits gelaufen.
ABER: leider schon am ersten Tag mit ein paar Schönheitsfehlern. Es haben sich leider einige wenige angemeldet und keine Mannschaft im Dropdown auf der Anmeldungsseite ausgewählt. Fehler gefunden und ein Bugfix eingespielt wo jedes inputfield ein required erhält und somit der User gezwungen ist überall etwas einzutragen.
So, einen Tag lief es gut und dann hat es ein Anwender doch tatsächlich geschafft sich 2x hintereinander OHNE Mannschaft (Dropdown-Auswahl) anzumelden. Im Dropdown ist ein required hinterlegt und die obere Option hat keinen Wert hinterlegt.
Der Code zu dem Dropdown:
<select name="selection5" required> <option value=""> - </option> <option value="1"> 1 </option> </select>
Ich habe nun seit Tagen versucht dieses Verhalten du kopieren und ein Submit der Daten zu veranlassen OHNE Gewählte Mannschaft im Dropdown, doch leider alles vergebens bei mir funktioniert das rewquired einwandfrei.
Getestet habe ich dies mit dem Chrome/Firefox/Android und selbst auf einem iPhone. Ich bin dann auf Stackoverflow darauf gestoßen das, dass Attribut required vom Safari nicht unterstützt wird, aber dabei bin ich nur auf Beiträge vor 2014 gestoßen ich denke mal in der Zeit haben die dieses Tag implementiert, darum habe ich es auch auf einem iphone getestet da ich fest die Hoffnung hatte das es genau daran lag, leider vergebens.
Nun bin ich am Ende meiner Lateien und stehe vor dem Problem das es auf irgendeine Art und Weise möglich ist sich ohne Mannschaft anzumelden, wodurch mir die Zuordnung in der Datenbank fehlt und die Anmeldung somit nicht gezählt wird, obwohl der angemeldete eine E-Mail erhält das er sich erfolgreich registriert wird.
Eine stark verkürzte Version des Formulars [Keine Gewähr das es per Copy&Paste funktioniert]
<form action="/anmeldung/anmeldung.html" method="POST" accept-charset="utf-8"> <fieldset> <legend> <h1> Anmeldung für Turnier... </h1> </legend> <p> <label class="Turnierbezeichnung">Soccer Cup 2018 - U7 vom 03.03.2018 bis 03.03.2018</label> </p> </fieldset> <fieldset> <legend> <h1> Verein </h1> </legend> <p> <label for="verein_name"> Vereinsname*: </label> <input type="text" class="form-control" name="verein_name" placeholder="Vereinsname" required> </p> </fieldset> <fieldset> <legend> <h1> Mannschaften </h1> </legend> <p> <label class="MannschaftLabel">U7 / 2011er, Samstag 03.03.2018 / 10:00 Uhr</label> <select name="selection5" required> <option value=""> - </option> <option value="1"> 1 </option> </select> <label class="MannschaftLabel"> Freie Plätze: 100 </p> </fieldset> <div class="submitButton"> <input class="submitButtonText" name="submit" type="submit" value="Anmelden" /> </div> </form>
Wer möchte kann gerne auf www.fussballturnier.lima-city.de gehen und Fakeanmeldungen durchführen um das Required auszutricksen, dort habe ich die Testseite eingerichtet mit Test-DB und ohne Mailversand.
Würde mich riesig freuen wenn es bei einem klappt und der jenige mir sagen kann WIE das möglich ist....
EDIT:
Es wäre Klasse wenn der jenige mit dem Vornamen "Fakeanmeldung" und mit dem Nachnamen "Wie im Lima-City Forum gewünscht" mich kontaktieren würde und mir sein Vorgehen mal demnostriert oder es mir beschreibt.
BITTE hinterlasst doch euren Nutzernamen im Kommentarbereich damit ich euch kontaktieren kann im Fall des Falles.
PS! Wenn ihr euch angemeldet habt und ihr den Bestätigungstext seht geht bitte auf den Link zu den Teilnehmern. Solltet ihr euch dort trotz Anmeldung nicht sehen meldet euch bitte bei mir!
Beitrag zuletzt geändert: 20.11.2017 13:20:31 von fussballturnier -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
//Vermutlich falsche Info von mir
Ich glaube du hast den Fehler mit deinem required.
Damit sagst du ja das er etwas setzen muss. Allerdings ist standardmäßig leer gesetzt. Und das wird einfach übernommen. (Teste das heute Abend mal aus).
So vermute ich aus,..., ohne das getestet zu haben.
<select name="selection5" required> <option value=""> - </option> </select>
Da option " - " auch eine ist, nur keinen value beinhaltet.
//
Versuch das doch mit so einer Art Affen Formular zu lösen. Alle Werte mit value aus einer Post variable lösen. Meldet das Auswärtsniederlage Script nun ey etwas ist falsch, geht es zurück zum Formular.
Dort sammeln sich nun alle eingegebenen Daten wieder in den Eingaben.
Halt auf value "" überprüfen in PhP. Dann kommt da auch nichts rein wo Angaben fehlen.
Sonnst ist natürlich möglich mit dem Dev Mode in dem Form rumzupfuschen und das Ding so umzukonfigurieren das es auch ohne value absendet. Das Formular wird ja clientseitig wieder zurück gesendet. Deswegen halt auf jede variable überprüfen und mit htmlspecialchars in PhP unschädlich machen. Nicht das man dir da noch was rein zimmert.
Beitrag zuletzt geändert: 20.11.2017 13:38:12 von horstexplorer -
Sonnst ist natürlich möglich mit dem Dev Mode in dem Form rumzupfuschen und das Ding so umzukonfigurieren das es auch ohne value absendet. Das Formular wird ja clientseitig wieder zurück gesendet. Deswegen halt auf jede variable überprüfen und mit htmlspecialchars in PhP unschädlich machen. Nicht das man dir da noch was rein zimmert.
Also davon gehe ich mal ganz stark aus, da meine Zielgruppe bzw die leute die sich da anmelden mit den DevMode auskennen. Die schaffen es wohl irgendwie, wie du es schon sagtest aufgrund meines requireds sich dennoch anzumelden. Aber bisher hat jegliches geteste von mir nur dazu geführt das ich eine "1" statt eines "-" wählen musste.
Achja, ein Affenformular ist bereits drumrum. Es füllt auch bisher immer die Daten korrekt wieder ein wenn die Seite neu geladen worden ist. Habe ich vllt vergessen zu erwähnen.
Beitrag zuletzt geändert: 20.11.2017 14:00:13 von fussballturnier -
Hallo,
du hast da in deinem Formular ein
<input type="text" name="captcha_code" class="captcha_code" size="10" <!--required--="">
oder so ähnlich, jedenfalls funktionieren Kommentare in Elementen nicht so gut, kommentiere da lieber das gesamte Element aus und erstelle es nochmal / gebe es einfach ganz weg.
Das onpaste auf der "Email Wiederholen" ist nervig:P
Im Input für das Captcha würde ich noch ein autocomplete="off" setzen, weil das Captcha bei jedem aufruf neu generiert wird(werden sollte)
Und bei den Buttons kannst du wenn du willst noch die Styles von Bootstrap verwenden, wenn du willst mit z.B. den Klassen "btn btn-primary"
Datenschutz/Impressum-Seiten sind irgendwie weg und bei der Error404 Seite gibts nur ein Bild, wo es keinen "zurück" Button oder so gibt :/
Und beim Select / textarea / input fürs Captcha kannst du bestimmt auch Boostrap Styles bei den Inputs verwenden -
du hast da in deinem Formular ein
Das habe ich soeben herausgenommen.
<input type="text" name="captcha_code" class="captcha_code" size="10" <!--required--="">
oder so ähnlich, jedenfalls funktionieren Kommentare in Elementen nicht so gut, kommentiere da lieber das gesamte Element aus und erstelle es nochmal / gebe es einfach ganz weg.
Das onpaste auf der "Email Wiederholen" ist nervig:P
Ja ich weiß aber das soll verhindern das man sich vertippt...
Im Input für das Captcha würde ich noch ein autocomplete="off" setzen, weil das Captcha bei jedem aufruf neu generiert wird(werden sollte)
Darum kümmer ich mich nachdem ich den Fehler gefunden habe :)
Und bei den Buttons kannst du wenn du willst noch die Styles von Bootstrap verwenden, wenn du willst mit z.B. den Klassen "btn btn-primary"
Darum ebenso nachdem der Fehler gefunden wurde
Datenschutz/Impressum-Seiten sind irgendwie weg und bei der Error404 Seite gibts nur ein Bild, wo es keinen "zurück" Button oder so gibt :/
Ja das ist gewollt hab die beiden sachen rausgenommen sind ja für diesen Test nicht relevant.
Und beim Select / textarea / input fürs Captcha kannst du bestimmt auch Boostrap Styles bei den Inputs verwenden
Werde ich auch noch nachholen.
Aber Danke dir für das Feedback/die Kritik. -
fussballturnier schrieb:
Die schaffen es wohl irgendwie, wie du es schon sagtest aufgrund meines requireds sich dennoch anzumelden. Aber bisher hat jegliches geteste von mir nur dazu geführt das ich eine "1" statt eines "-" wählen musste.
Für mich hat es ohne Probleme geklappt, einfach das required-Attribut vom select-tag zu entfernen, sodass der Code in der Entwicklerkonsole wie folgt aussieht:
<select name="selection4"> <option value=""> - </option> <option value="1"> 1 </option> </select>
Diese Methode funktioniert für jedes Eingabefeld bis auf Name und PLZ. Bei diesen Feldern erscheint eine entsprechende Fehlermeldung.
Anscheinend schaust du hier serverseitig nach, ob das Feld leer ist. Dasselbe solltest du für jedes Pflichtfeld tun. Du kannst dich nur komplett auf serverseitige Validierung verlassen - clientseitige Validierung lässt sich in den meisten Fällen einfach umgehen.
Beitrag zuletzt geändert: 20.11.2017 17:51:37 von witze-dschungel -
Für mich hat es ohne Probleme geklappt, einfach das required-Attribut vom select-tag zu entfernen, sodass der Code in der Entwicklerkonsole wie folgt aussieht
Du warst also im Entwicklermodus und hast das Formular editiert. Das ist mir bewusst das ich nur Clientseitig Validiere.
Es geht mir aber um OTTO-Normal-Anwender die sich nur registrieren und keine IT-ler sind die das Formular vorher bearbeiten.
Warst du der jenige der sich mit "t@example.coj" angemeldet hat? -
Ohne die Entwicklertools fällt mir spontan keine Möglichkeit ein, das required-Attribut auszutricksen - außer natürlich mit einem beliebigen Uralt-Browser. Unter Safari 11 gibt es keine Probleme, gerade getestet.
Serverseitige Validierung würde ich auch für eine Seite für nicht technisch versierte Nutzer verwenden. Vor allem, da diese unter Umständen noch ältere Browser im Einsatz haben (meines Wissens nach wird das required-Attribut erst ab Internet Explorer 10 unterstützt). Aber ob du nun serverseitig validierst, bleibt natürlich deine Entscheidung.
Habe mit ein paar E-Mail-Adressen mit der Domain "example.com" getestet sowie ein paar Stunden vorher mit dem Nutzernamen "Fakeanmeldung".
Beitrag zuletzt geändert: 20.11.2017 18:49:17 von witze-dschungel -
Die serverseitige validierung möchte ich demnächst einbauen. Meine Vermutung war auch das es sich um Leute handelt die uralte browser verwenden.
Wenn du bei allen Versuchen die entwicklertools verwendet hast dann kann es nurnoch ein alter Browser sein der das verursacht. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage