Exponentielle Backslashes

G

grkpfl

Hallo

Ich hab ein kleines Problem mit PHP.

Ich übergebe POST-Variablen von Formular zu Formular (Textfeld zu Textfeld).
Also das zweite Textfeld sieht dann im Prinzip so aus:

PHP:
(formular etc...)
echo "<textarea name="new_text">".$_POST[old_text]."</textarea>";
(formular etc...)

Das Problem hierbei ist, das sich die Backslashes ("\") immer vedoppeln.
Gebe ich in in old_text "\" ein, bekomme ich in new_text "\\", exponentiell fortführend :p

Wie kann ich das unterdrücken?
Ich weiss auch selber das dass eine dämliche Frage ist,
jedoch ist es das erste mal, dass mir sowas auffällt.
Angenommen new_text bekommt seine Value aus eine Datenbank, dann würden sich die Backsplashe nicht verdoppeln.

Wer kann mir weiterhelfen?
Danke,

grkpfl

PS: Ich hoffe Backslashes sind die einzigen Zeichen, die mir da Sorgen bereiten könnten :confused:
 
Dieses Verhalten hängt mit der Einstellung magic_quotes_gpc zusammen. Entweder du setzt sie in der php.ini auf Off (falls möglich) oder du entfernst die Backslashes entsprechend aus den GPC-Arrays.

Beispielcodeschnipsel:
PHP:
<?php

function stripslashes_array(&$array)
{
	reset($array);
	while(list($key,$val)=each($array)) {
		if (is_string($val)) $array[$key] = stripslashes($val);
		elseif (is_array($val)) $array[$key] = stripslashes_array($val);
	}
	return $array;
}

if (get_magic_quotes_gpc()) {
	if (is_array($_REQUEST)) $_REQUEST = stripslashes_array($_REQUEST);
	if (is_array($_POST)) $_POST = stripslashes_array($_POST);
	if (is_array($_GET)) $_GET = stripslashes_array($_GET);
	if (is_array($_COOKIE)) $_COOKIE = stripslashes_array($_COOKIE);
}

?>
 
Junge HERZLICHEN DANK!
Deine Funktion hat mir sehr sehr weitergeholfen.

Magic Quotes, davon hab ich öffters was gehöhrt,
mich aber nie wirklich damit auseinandergesetzt.
Zu welcher Konfiguration rätst du mir? Off oder On?

Hab übrigens bezüglich PHP 6 kurz was darüber gelesen,
dort wird diese Eigenschaft ja irrgendwie wegfallen oder so
(genau weiss ich dass nicht).

Deswegen würde ich mich sowieso gerne schon
mit den zukünftigen Einstellungen vertraut machen,
aber wie gesagt, was rätst du mir?

Danke nochmal,
grkpfl
 
Meine persönliche Meinung: magic_quotes auf off stellen. Damit kommen Daten aus externen Quellen unverfälscht an. Wenn man bei der Verarbeitung der einkommenen Daten Backslashes braucht, kann man sie je nach Kontext via [phpf]addslashes[/phpf], [phpf]mysql_real_escape_string[/phpf] o.ä. selbst setzen.
 
Zurück