Tach!
Was sql injections angeht, ich bin zwar bereits dran mich über das Thema zu informieren, aber nützliche Tipps und Kommandos können nie schaden.
SQL-Injection ist nur eine Spielart der Injections. Sie können überall auftreten, wo Daten und Code gemischt übertragen werden und der Empfänger zwischen Code und Daten unterscheiden muss. Grundsätzlich musst du also an all den Stellen, an denen du Daten irgendwo einfügst, dir überlegen, ob man nicht auch Code einschleusen könnte. Dabei darfst du nicht nur auf Eingaben von Anwendern achten. Im Prinzip ist es sogar egal, woher die Daten kommen. Solange du nicht genau ihren Inhalt kennst, musst du sie als potentiell gefährlich betrachten.
Wichtig ist nun zu wissen, was das Zielsystem für Sonderzeichen hat. Es ist auch keine schlechte Idee, genau mit diesen Sonderzeichen dein System zu malträtieren. Es muss sich souverän verhalten und alle Zeichen wie eingegeben anzeigen. Ob das am Ende ein sinvoller Wert für deine Anwendung ist, ist für die Injection-Betrachtung nicht weiter interessant. Inhalte müssen an anderer Stelle auf fachliche Richtigkeit geprüft werden.
Ist dir schon der Kontextwechsel-Artikel empfohlen worden? Da hab ich mal alles Wichtige aufgeschrieben.
$db = new Mysqli('localhost', 'root', 'zigeuner123', 'tutorium');
echo 'sql offen';
$sql = sprintf ("INSERT INTO angaben (Vorname, Nachname, hausnummer, Jahr, Uhrzeit, Wochentag)
VALUES (%s,%s,%s,%s,%s,%s)",
Hier fehlen Anführungszeichen, dafür sind Backslashes zu viel.
(int)($_POST['hausnummer']),
Du kannst auch die Funktion intval() verwenden.
Mehrere Zeitangaben mit Leerstellen trennung bsp: 12:00 13:00 /Wenn jemand weiß wie ich die Uhrzeit besser speichern kann nur zu Tipps sind erwünscht!</label><br>
Nunja, in der Form bekommst du sie nur als String. Dann heißt es entweder den String ins DBMS zu schreiben, auf das dieses die Uhrzeit nicht wirklich auswerten kann, oder du fummelst die Eingabe auseinander und formatierst sie so, dass sie in ein TIME-Feld eingefügt werden kann. Und nun kommst du wieder an das bereits erwähnte Problem der Strukturierung deiner Tabellen, so dass beliebig viele Uhrzeiten eingegeben werden können und das System sie auch noch erkennt.
So hier ist mein Formular an dem ich gerade sitze. Ich weiß zwar grad nicht warum es nicht läuft bzw es keine Daten an die Db schickt aber da schau ich mal später rein, dürfte kein problem sein.
Debugging ... die notwendigen Werkzeuge sind dir sicher schon genannt worden.
Mein hauptproblem besteht bis jetzt nur aus:
Das Array speichern.
Eine Anständige Uhrzeit hinbekommen.
Und die WOchentage auch anständig in die Db zu kriegen.
Dafür solltest du zuerst deine Tabellen richtig designen. Dabei helfen dir die Datenbänker, wenn du ihnen mehr von deiner Anwendung erzählst, so dass sie fachlich einschätzen können, welches Design dafür sinnvoll ist.
Wenn das geklärt ist, kannst du darüber nachdenken, wie du die Daten in die Tabellen bekommst.
dedlfix.