dedlfix: Mysqli namen speicherung?

Beitrag lesen

Tach!

$db->real_escape_string(implode(',',$_POST['Jahr'])),
Was allerdings zum vorschein gekommen ist, wenn man das formular absendet ohne ein haken in einer der checkboxen zu machen, bekomme ich 2 Fehlermeldungen.
Notice: Undefined index: Fach in C:\xampp\htdocs\xampp....php on line 76
Warning: implode() [function.implode]: Invalid arguments passed in C:\xampp\htdocs\xampp....php on line 76
Nunja, die 2 kann ich mir auch beantworten, einmal weil das Index wenn ich das Formular aufrufe noch leer ist und man erst die checkboxen checken muss.

Mit var_dump() würdest du genauer sehen, was Phase ist. $_POST['Jahr'] dürfte gar nicht vorhanden sein, wenn du Jahr nicht noch einmal an anderer Stelle als Input-Element-Namen verwendest.

Und das implode scheint wohl auch noch an der Falschen stelle zu sein...
$db->real_escape_string(implode(',',$_POST['Jahr'])),
wahrscheinlich auch weil es das array nicht erkannt wird wenn es nicht bestätigt wurde

Rate nicht, bevor du nicht mit einer Kontrollausgabe geprüft hast, was tatsächlich vorliegt!

Wenn du auf das Vorhandensein des submit prüfst, dann kann man in manchen Browsern, vorwiegend IE nicht mit Enter das Formular absenden, denn der IE betrachtet einen nicht geklickten Button als nicht erfolgreiches Element und schickt es nicht mit. Andere Browser nehmen sich einfach irgendeinen Button und tun so, als ob er geklickt wurde.
hm? hab gemeint das ich mit der isset abfrage das abfragen würde, oder gibt es da noch eine andere möglichkeit die mir entgangen ist?

Das submit ist nicht in allen Fällen sicher vorhanden. Du prüfst auf die anderen Werte, das reicht.

Was die sql injection angeht, hm ich find bis jetzt sieht der code doch recht sicher aus oder nicht?

Es ist sicher gegen das Einfügen von Befehlsbestandteilen in das SQL-Statement, aber der Anwender wird nicht gehindert, Werte mit Kommas drin oder gar anderen Werten mitzusenden.

Ich werde die einzelnen input felder natürlich noch mit htmlspecialchars ausbessern und die eingabe überprüfen aber da es jetzt möchte ich erstmal das alles anständig in der datenbank landet.

htmlspecialchars() ist nicht für Eingaben sondern für Ausgaben in Richtung HTML geeignet.

dedlfix.