Also, wenn ich ein Formular abschicke, per PHP auswerten will und dann folgendes erhalte, ist das irgendwie kontraproduktiv. Und zwar werden gewisse Zeichen ja escaped. Das schaut dann so aus:
<?php
echo 'Dies ist ein Test';
?>
<?php
echo \'Dies ist ein Test\';
?>
<?php
echo \\\'Dies ist ein Test\\\';
?>
Und so weiter. Der PHP-Code der dahinter steht, sieht so aus:
<?php
echo $_POST['text'].'<br><br>'.highlight_string($_POST['text'], true);
?>
<form action="test.php" method="POST">
<textarea cols="64" rows="20" wrap="OFF" name="text"><?php echo $_POST['text']; ?></textarea>
<input type="submit" value="senden">
</form>
PHP bzw. das Script an sich scheint aber nur ein Escape zu erkennen:
<?php
echo 'Dies ist ein Test\\\';
?>
Zumindest laut Highlight_string().
Das Problem scheint ja beim Formular zu liegen. Ansonsten bitte einfach ins PHP-Forum verschieben! xyz-48ke,schonmal...
schonmal etwas von stripslashes(); gehört? ;)
Hab hier gerade mal etwas für dich:
// Slashes entfernen
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);
if(is_array($_SERVER)) $_SERVER = stripslashes_array($_SERVER);
}
Und die Funktion:
// global.php zum stripslashes entfernen
function stripslashes_array(&$array){
reset($array);
foreach($array as $key => $value){
if(is_string($value)) $array[$key] = stripslashes($value);
elseif(is_array($value)) $array[$key] = stripslashes_array($value);
}
return $array;
}
so mach ich das zumindest ;) darfst nur nicht vergessen in ner mysql_query() oder so wieder addslashes() zu verwenden :)
Hatte mit Addslashes und so auch schon geschaut. Aber: xyz-48n entfernt er doch auch die absichtlich escapeten Zeichen, oder?
Nachtrag: Getestet und es funktioniert auch bei absichtlichen "slashes". Vielen xyz-48k dafür, hab ich mir lange den Kopf dran zerbrochen. :D
So ist es etwas kürzer:
// wenn magic_quotes_gpc angeschaltet
if (get_magic_quotes_gpc()) {
function my_stripslashes($var)
{
return is_array($var) ? array_map('my_stripslashes', $var) : stripslashes($var);
}
$_GET = array_map('my_stripslashes', $_GET);
$_POST = array_map('my_stripslashes', $_POST);
$_COOKIE = array_map('my_stripslashes', $_COOKIE);
$_REQUEST = array_map('my_stripslashes', $_REQUEST);
}
Allerdings testet das Script nicht, ob die Arrays überhaupt definiert sind.
Alternativ kannst du auch direkt die magic_quotes_gpc Direktive ändern.
Für MySQL verwendest du besser mysql_real_escape_string() ;)
Jo, hab ich auch noch an meine Funktion angehängt. Meine Class schaut gleich, ob ich per Parameter ein Escapen verlange.
xyz-48n kommen erst alle Slashes raus, dann wird der Text entsprechend veraendert und dann wird wieder escaped. :D
Ich danke auf jeden Fall.