|
PROGRAMS
|
||
|---|---|---|
En php, pour récupérer des informations venant d'un formulaire (ou
autre), il y a beaucoup de façons de le faire... Pour utiliser ces
informations dans, par exemple, une requete SQL, il est obligatoire
d'escaper les chaines pour éviter les failles ou les plantages. Il y a
une fonction pour faire ça. Il y a aussi MagicQuotes qui peut faire ça
de façon automatique, pour éviter qu'un user crée une faille si jamais
il oublie d'escaper.
Mais voila, le probleme, c'est que l'etat de magicquotes n'est parfois
pas le même sur le serveur de développement et sur le serveur de
production. Pire encore, parfois, ça peut changer selon les facéties
d'un admin sadique ;)
Après avoir pas mal galéré avec ce probleme, surtout avec un seul
serveur de dev pour plusieurs sites avec chacuns un serveur avec des
config differentes, voila ma solution, que j'utilise sur plusieurs
sites, dont celui là. Il suffira de mettre ce code dans un fichier
d'include qui sera executé pour chaque page, et au final on aura deux
tableaux globaux : il suffira de lire les informations non escapés
dans $in_['param'] et celles qui doivent être parsés dans
$in['param'] (param etant ici le nom de l'argument que l'on
veut consulter) et cela quelque soit la configuration de magicquote,
on ou off. :)
<?php
/*
Routine de récupérations des arguments quelque soit la configuration
de magicquotes. On récupére tout dans les tableaux $in et $in_.
http://clx.freeshell.org/
*/
set_magic_quotes_runtime(0);
$in = array();
$in_ = array();
if( get_magic_quotes_gpc() ) {
if( is_array($HTTP_GET_VARS)) {
foreach ($HTTP_GET_VARS as $variable => $value ) {
$in_[$variable] = StripSlashes($value);
$in[$variable] = $value;
}
}
if( is_array($HTTP_POST_VARS)) {
foreach ($HTTP_POST_VARS as $variable => $value ) {
$in_[$variable] = StripSlashes($value);
$in[$variable] = $value;
}
}
}
else {
if( is_array($HTTP_GET_VARS)) {
foreach ($HTTP_GET_VARS as $variable => $value ) {
$in_[$variable] = $value;
$in[$variable] = AddSlashes($value);
}
}
if( is_array($HTTP_POST_VARS)) {
foreach ($HTTP_POST_VARS as $variable => $value ) {
$in_[$variable] = $value;
$in[$variable] = AddSlashes($value);
}
}
}
?>
|