Willkommen in der Webstatt
User-1 am 05.10.06 10: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! xyz-48ke,schonmal...

netcup.de Warum gibt es hier Werbung?
User-2 am 05.10.06 11:05

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 :)

User-1 am 05.10.06 11:36

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

User-3 am 05.10.06 12: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() ;)

User-1 am 05.10.06 13:31

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.

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt