dass ein ini_set() mit magic_quotes auf off ein stripslashes() auf GET und POST nach sich zieht
Irgend wann einmal habe ich mir eine Funktion
gebastelt um so dusselige Servereinstellungen zu
korrigieren. Nagut die $_FILES Abhandlung fehl noch.
Und das Unterschieben von globalen Arrays tuts auch
nur bei ganz alten PHP4 Versionen. Kannst ja mal einen Blick drüber werfen
PHP-Code:
function array_stripslashes(&$var) // helper Funktion
{ // in einem Tutorial gefunden
if(is_string($var))
{
$var = stripslashes($var);
} else
{
if(is_array($var))
{
foreach($var as $key => $value)
{
array_stripslashes($var[$key]);
}
}
}
}
function leben_mit_unguten_einstellungen()
{
static $once = FALSE;
if ($once) return; // einmal reicht
$once = TRUE;
// testen, ob uns einer ein superglobales Array unterschieben will
$kill_list = '_POST|_SERVER|_GET|_FILES|_SESSION|_ENV';
$kill_list .= '|_COOKIE|GLOBALS|_REQUEST';
foreach(explode('|',$kill_list) as $kill)
{
if (isset($_REQUEST[$kill])) die('Error: Bad Params');
}
// magic_quotes rückgängig machen
ini_set('magic_quotes_runtime', 0);
ini_set('magic_quotes_sybase', 0);
if(get_magic_quotes_gpc())
{
ini_set('magic_quotes_gpc', 0);
array_stripslashes($_GET);
array_stripslashes($_POST);
array_stripslashes($_COOKIE);
}
// register_globals=on rückgängig machen
$del_list = '_SERVER|_SESSION|_ENV|_REQUEST|_COOKIE';
if (ini_get('register_globals'))
{
ini_set('register_globals', 0);
foreach(explode('|',$del_list) as $superarray)
{
if (isset($GLOBALS[$superarray]))
{
foreach($GLOBALS[$superarray] as $key=>$value)
{
$GLOBALS[$key] = NULL;
unset($GLOBALS[$key]);
}
}
}
}
}
leben_mit_unguten_einstellungen();
Kommentar