[PHP] <textarea> mit Quotes wird zu Backslash-Quotes

Drrichardfahrer

Well-known member
ID: 207405
L
20 April 2006
7.060
691
Ich hab in einem Formular eine Textarea, dessen Inhalt aus einer MySQL-Datenbank geladen wird

PHP:
"<textarea blablabla>" . nl2br($inhalt) . "</textarea>

Wenn ich jetzt als Inhalt Anführungszeichen habe ("), und das Formular abschicke (das bedeutet der Inhalt der Textarea wird in die DB geschrieben, quasi der alte Inhalt wird überschrieben), dann zeigt er mir beim nächsten Mal das an: \". Beim weiteren Speichern dann so: \\\".

Das werden immer mehr Backslashes. Was kann ich dagegen tun, dass " auch " bleibt und nicht da mit Backslashes versehen wird.

Seite läuft übrigens mit UTF-8.
 
nun wie fügst du es in die DB? scheinbar fügst das ja dort mit / ein, daher wrds auch angezeigt und beim nächsten mal wird aus \ ein \\ und dem "\" so das \\\" drin steht.

*edit*
Da liegt glaube an magic_qoutes, die an sind??
 
Ich habs jetzt mit Stripslashes gelöst :)
Is aber nicht die Optimallösung: Stell dir vor, du ziehst auf einen Server / bzw. die Serverkonfiguration wird geändert, dass magic_quotes plötzlich aus sind. Dann stripst du zwar einmal die Slashes, aber niemand fügt sie mehr hinzufügt.
Dann geht es umgekehrt schief.
 
Jo. Wenn du nur stripst, wenn die magic_quotes an sind, dann kann da nix schief gehen.
 
Um solche Fehler auszuschliessen, benutze ich immer Folgendes:
PHP:
	if (get_magic_quotes_gpc() or get_magic_quotes_runtime())
	{
		function stripslashes_deep($value)
		{
			return is_array($value)
				? array_map(__FUNCTION__, $value)
				: stripslashes($value);
    	}

    	$_POST = array_map('stripslashes_deep', $_POST);
    	$_GET = array_map('stripslashes_deep', $_GET);
    	$_REQUEST = array_map('stripslashes_deep', $_REQUEST);
	}
 
Ich hab bei mir immer eine bootstrap.inc.php, die sowas übernimmt und am Anfang des FrontControllers eingeladen wird. Wer keinen FrontController-Ansatz nimmt, muss sich halt anders behelfen und das am Anfang jeder Datei aufrufen (schlechte Lösung) oder halt auch eine spezielle Datei am Anfang jeder Datei inkludieren (bessere Lösung).