PHP - Eingabetext sicher in Variable speichern

Psychodelics

Erfahrenes Mitglied
Hallo zusammen,

ich bräuchte mal Hilfe zum Thema "Formularfelder".

Der Text aus dem Formularfeld soll nach dem Senden in einer Vorschau und erneut im Formularfeld angezeigt werden.

Mein Problem ist, dass mit stripslash zum Beispiel Scripte ausgeführt werden können, das soll nicht sein, aber ich will dass der komplette Text unverändert bleibt. Der User soll die Möglichkeit haben, mit seinem Text weiter zu arbeiten.

Wer kann mir dabei helfen. Hab schon so einige Threads zu dem Thema durch, aber die waren nicht sehr hilfreich.

Danke im Voraus.

Gruß, Adnan
 
Wieso sollte beim Aufruf von stripslash Scripte ausgeführt werden? Und welche Scripte meinst du überhaupt?

Das Einzige, was du verwenden solltest, ist htmlspecialchars, um die HTML-Metazeichen zu ersetzen.
 
Hey Gumbo,

danke für die schnelle Antwort.

Problem ist, wenn ein User schreibt:

I'm here

Dann soll das nach dem Senden immer noch genau so aussehen. Bei mir steht dann immer

I\'m here

Es sei denn ich schreibe stripslashes vor die Variable, dann kann man aber auch Code in das Feld schreiben, welcher sogar ausgeführt wird.

Gruß, Adnan
 
Das hört sich so an, als "hättest du irgendwo gehört", man könnte mit dem ' (Hochkomma) böse Sachen machen, ohne aber zu verstehen, um was es eigentlich geht. Sofern du die Nutzereingabe in einer Datenbank speicherst, und die Variable dort direkt mit dem Query-String konkatenierst(und nicht etwa Parameter verwendest), solltest du die Eingabe mit mysql_real_escape_string() umschließen.
Da du aber von "Scripts" redest, gehe ich mal von Javascript oder anderen Browserscripts aus und da hat Gumbo bereits htmlspecialchars() erwähnt, welches das Hochkomma(wichtiger: auch die spitzen Klammers, welche HTML Tags umschließen) als HTML-Entitity darstellt. stripslash() wiederrum hilft dir da überhaupt nicht, wohl aber bei der Datenbank Sache.
 
Danke für eure Antworten, aber wie muss ich denn jetzt die Variable speichern, bzw. wieder auf das Eingabefeld setzen, so dass ich alle Zeichen so angezeigt bekomme, wie sie geschrieben wurden ohne das JavaScript Befehle ausgeführt werden können usw. Ich hab's ausprobiert. Ich kann Befehle wie alert starten oder weiterleitung. Das ist nicht schön...

Gruß, Adnan
 
PHP:
htmlspecialchars($deineVariable)

Wenn dir das nicht reicht, brauchen wir mehr Infos von dir, zum Beispiel ein Stück deines Quellcodes.
 
Nach wie vor,

wenn ich das eingebe, bekomme ich als Resultat auf

I'm

I\'m

PHP:
<input name = "reason" type = "text" value = "<?php echo htmlspecialchars($_POST['reason'])?>" />

Der User muss seinen Text weiter bearbeiten können.

Bei mir funktioniert das nicht. Diese Slashes stören halt.

Gruß, Adnan
 
Aber Scripte solltest du nicht mehr ausführen können. Die Slashes kommen dann wohl daher:
magic_qoutes_gpc ist an
(der Beitrag hätte ruhig ein paar mehr Worte umfassen können.)
Die Servervariable magic_qoutes_gpc scheint auf on zu stehen, somit werden zum Beispiel alle Werte in der $_POST Variable mit Slashes escaped (http://php.net/manual/en/security.magicquotes.php). Um festzustellen, ob es wirklich an ist, gib mal get_magic_quotes_gpc() aus(http://www.php.net/manual/en/function.get-magic-quotes-gpc.php).
 
Es ist wirklich an. Dann muss ich das ausschalten. Hat es irgendwelche Nachtteile, wenn ich's ausstelle und kann mir jeman dkurz sagen, wie ich es ausstelle?

Gruß, Adnan

So wie ich das jetzt verstanden habe, ich es nicht schlimm, wenn ich den Befehl stripslashes auf ein Textfeld anwende.

Dann werde ich es so machen, weil es so funktioniert. Danke nochmal.

Gruß, Adnan
 
Zurück