Hallo,
ich habe (wieder mal) ein kleines Problem. Ich versuche mittels PHP, eine Variable angehängt an einer URL zu übergeben. Da die Variable Text enthält, verwende ich urlencode() zum übergeben und urldecode() beim auslesen der Variable. Klappt auch alles wunderbar.
Du brauchst urldecode() nicht. Das dekodiert sich schon durch PHP von selbst.
Bei Auslesen der Variable gibt es dann allerdings ein Problem. Wenn die Variable Anführungsstriche enthälte, wird diesen automatisch ein Slash vorangestellt (z.B. "Testvariable"), also die typische PHP-Maskierung.
Kann mir jemand sagen, wie ich diese Slashes wieder wegbringe?
stripslashes() heißt die Funktion, die genau das macht.
Der Grund dafür, dass Slashes eingebaut werden: Sehr häufig werden diese Daten in Datenbanken geschrieben. Die SQL-Anweisungen werden dabei als String zusammengesetzt und dann der Datenbank übergeben:
$sql="INSERT INTO tabelle (spalte1, spalte2) VALUES ('$wert1','$wert2')";
Wenn die Variablen $wert1 und $wert2 allerdings einfache Anführungszeichen enthalten, entsteht Chaos:
$wert1="Wie geht's?";
$wert2="Ganz gut";
$sql="INSERT INTO tabelle (spalte1, spalte2) VALUES ('$wert1','wert2')";
Führt zu folgendem String:
$sql="INSERT INTO tabelle (spalte1, spalte2) VALUES ('Wie geht's?','Ganz gut')";
Und da ist ein Anführungszeichenfehler, den man durch einen Backslash verhindern kann.
Deshalb Faustregel: Daten, die direkt aus der URL oder einem Formular wieder ausgegeben werden sollen, immer mit stripslashes() bearbeiten. Daten aus der Datenbank verlieren durch das Speichern und Auslesen ihre Backslashes automatisch - da braucht man dann nichts mehr zu machen.
- Sven Rautenberg