1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
| <?
#
function fix_magic_quotes ($var = NULL, $sybase = NULL)
#
{
#
// si $sybase n'est pas spécifié, on regarde la configuration ini
#
if ( !isset ($sybase) )
#
{
#
$sybase = ini_get ('magic_quotes_sybase');
#
}
#
#
// si $var n'est pas spécifié, on corrige toutes les variables superglobales
#
if ( !isset ($var) )
#
{
#
// si les magic_quotes sont activées
#
if ( get_magic_quotes_gpc () )
#
{
#
// tableaux superglobaux a corriger
#
$array = array ('_REQUEST', '_GET', '_POST', '_COOKIE');
#
if ( substr (PHP_VERSION, 0, 1) <= 4 )
#
{
#
// PHP5 semble ne pas changer _ENV et _SERVER
#
array_push ($array, '_ENV', '_SERVER');
#
// les magic_quotes ne changent pas $_SERVER['argv']
#
$argv = isset($_SERVER['argv']) ? $_SERVER['argv'] : NULL;
#
}
#
foreach ( $array as $var )
#
{
#
$GLOBALS[$var] = fix_magic_quotes ($GLOBALS[$var], $sybase);
#
}
#
if ( isset ($argv) )
#
{
#
$_SERVER['argv'] = $argv;
#
}
#
// désactive les magic quotes dans ini_set pour que les
#
// scripts qui y sont sensibles fonctionnent
#
ini_set ('magic_quotes_gpc', 0);
#
}
#
#
// idem, pour magic_quotes_sybase
#
if ( $sybase )
#
{
#
ini_set ('magic_quotes_sybase', 0);
#
}
#
#
// désactive magic_quotes_runtime
#
set_magic_quotes_runtime (0);
#
return TRUE;
#
}
#
#
// si $var est un tableau, appel récursif pour corriger chaque élément
#
if ( is_array ($var) )
#
{
#
foreach ( $var as $key => $val )
#
{
#
$var[$key] = fix_magic_quotes ($val, $sybase);
#
}
#
#
return $var;
#
}
#
#
// si $var est une chaine on utilise la fonction stripslashes,
#
// sauf si les magic_quotes_sybase sont activées, dans ce cas on
#
// remplace les doubles apostrophes par des simples apostrophes
#
if ( is_string ($var) )
#
{
#
return $sybase ? str_replace ('\'\'', '\'', $var) : stripslashes ($var);
#
}
#
#
// sinon rien
#
return $var;
#
}
#
#
fix_magic_quotes();
?> |
Partager