Moin!
ich habe nach Deinen Ausführungen das Ganze nochmal überarbeitet, die Sessions entfernt, die Umwandlung der Zeichen in die Ausgabe reingenommen und und und ;)
Jetzt zu sehen unter http://www.romy-b.de/gb_neu.css [1]
Sieht viel besser aus. Allerdings hast du das Problem der magic_quotes noch nicht vollständig gelöst. Denn wenn dein Affenformular fehlerhaft ausgefüllt wurde, dann sammeln sich die Backslashes wieder an in den Feldern.
Deshalb: stripslashes sollte immer stattfinden, egal ob das Formular nun richtig oder falsch ausgefüllt ist.
Das escapen für die Datenbank solltest du dagegen direkt im SQL-String einbauen und nicht in den Variablen zwischenspeichern: $query = ".... ".mysql_real_escape($inhalt)." ...";
Dann kannst du später nämlich auch einfach htmlspecialchars($inhalt) als Vorbelegung ins Formular schreiben.
Oder du verzichtest generell auf das erste Kopieren von $_POST['inhalt'] nach $inhalt und arbeitest immer mit dem Array. Die Werte darin darf man nämlich auch ändern. :)
die Anzeige im eigentlichen Gästebuch sieht so aus:
stripcslashes(nl2br(htmlentities($line["inhalt"])))
stripcslashes? Wozu dieses? Die Daten kommen unescaped aus der Datenbank wieder heraus, auch wenn mysql_real_escape() sie mit passenden Sequenzen versehen hat.
was mich noch ganz schön fuchst ist die Frage sollte ich die Emailadressen und URL's prüfen oder nur absichern, dass kein Schaden angerichtet werden kann.
Das hängt davon ab, was du mit den Daten noch anstellen willst. Ein Gästebuch wird diese Angaben eigentlich ja nur wieder ausgeben wollen, eine absolute Korrektheit in dem Sinn, dass noch irgendein Programm was damit anfangen kann, ist nicht unbedingt notwendig. Insofern wäre Sicherheit gegen Unfug wichtig (der Schreiber sollte keine HTML-Zeichen einschleppen dürfen, denn dann kann er auch Javascript einschleppen, und das ist böse).
[1] *.css da *.txt angezeigt wird von diesem Server und es komisch aussieht.
Du benutzt den Internet Explorer.
PHP-Quellcode kann man prima mit der Endung "phps" ausliefern lassen. PHP selbst kann dann für ein Syntax-Highlighting sorgen.
- Sven Rautenberg