Webstatt.org - Community seit 2006 - 2012 (2024?)

Formular verunstaltet die Zeichenkette

Avatar user-168
05.10.2006 08:53

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! user-158ke,schonmal...

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
Avatar user-182
05.10.2006 09:05

schonmal etwas von stripslashes(); gehört? zwinkern

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 zwinkern darfst nur nicht vergessen in ner mysql_query() oder so wieder addslashes() zu verwenden lächeln

Seid ihr auch schon wix'r? xD
Avatar user-168
05.10.2006 09:36

Hatte mit Addslashes und so auch schon geschaut. Aber: user-158n entfernt er doch auch die absichtlich escapeten Zeichen, oder?

Nachtrag: Getestet und es funktioniert auch bei absichtlichen "slashes". Vielen user-158k dafür, hab ich mir lange den Kopf dran zerbrochen. Fettes Grinsen

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
Avatar user-300
05.10.2006 10:56

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() zwinkern

Avatar user-168
05.10.2006 11:31

Jo, hab ich auch noch an meine Funktion angehängt. Meine Class schaut gleich, ob ich per Parameter ein Escapen verlange.

Dann kommen erst alle Slashes raus, dann wird der Text entsprechend veraendert und dann wird wieder escaped. Fettes Grinsen
Ich danke auf jeden Fall.

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche