dedlfix: speichert nicht

Beitrag lesen

echo $begrüßung;

Gib dem Submitbutton lieber einen Namen und frag den ab.

Das bringt es nicht. Der Submit-Button muss zum Absenden nicht verwendet werden, z.B. dann, wenn das Formular mit Enter abgesendet wird. Der IE erkennt dann den Submit-Button nicht als aktiviert an und sendet nichts mit. Wenn du nun den Submit-Button befragst, sieht das Formular wie ungesendet aus.

Dann kannst du prüfen ob die Felder leer sind und z.B. nur Buchstaben und vielleicht noch Leerzeichen enthalten.

Die Prüfungen sollten aus logischer Sicht der Anwendung erfolgen. Dabei wären solche Fragen zu klären: Welche Felder müssen Werte enthalten? Wie müssen diese Werte aussehen (gültiger Zahlenwert, gültiges Datum, usw.)?

Dann noch die Umlaute mit htmlentities o.ä. umwandeln und du hast nichts zu befürchten.

Das ist nicht sinnvoll. Umlaute sind zum einen unschuldig, zum anderen haben solche HTML-spezifischen Notationen in einer Datenbank nichts zu suchen. Daten sollen immer erst dann in ein kontextspezifisches Format gebracht werden, wenn du sie in den jeweiligen Kontext bringst. Notierst du Bärbel als Bärbel in der Datenbank, fällst du beispielsweise bei Abfragen nach Namen kürzer als 7 Buchstaben auf die Nase.

htmlentities() soll erst zur Ausgabe in den HTML-Text verwendet werden, und dann reicht m Prinzip ein htmlspecialchars(), wenn man sich über die zu verwendende Zeichenkodierung seines Dokuments Gedanken gemacht hat.

(Zumindest kein Script-Injection)

SQL-Injection ist die Einschleusung von Befehlsbestandteilen über eine Dateneingabe. Daten werden aber erst dann zu Befehlsbestandteilen, wenn du den String verlässt, in dem die Daten eingefügt werden sollen. Dazu benötigst du das Zeichen ', welches du aber durch die Anwendung von htmlentities() unberührt lässt.

Für eine MySQL-gerechte Maskierung von Daten sorgt die Funktion mysql_real_escape_string().

Eventuell hast du aber auch einen Fehler bei der Verbindung zur DB.
Wird denn ein Fehler ausgegeben? Welcher?

Da wird vermutlich keiner ausgegeben oder nur ein PHP-Folgefehler. Denn es wurden, wie so oft von Anfängern, die Rückgabewerte der mysql_*-Funktionen ignoriert, die über einen Fehlerzustand informieren wollten. Der genaue Wortlaut der Fehlermeldung kann über die Funktion mysql_error() abgefragt werden.

echo "$verabschiedung $name";