Vilains guillemets magiques
Les guillemets magiques c’est l’invention la plus pénible depuis la Macarena. Cette fonctionnalité protège les valeurs reçues en HTTP, en échappant les guillemets simples (quotes en English) à grands coups de addslashes(). Du coup au lieu d'avoir « l'esprit de l'arbre » on se retrouve avec « l\'esprit de l'\arbre ». C'est peut-être pratique pour le développeur peu soucieux de la sécurité de ses requêtes SQL, mais cela devient vite pénible lorsque l'on doit mettre des stripslashes() dans tous les sens.
Heureusement il est toujours possible de les désactiver :
- en mettant
magic_quotes_qpcàOffdans le fichierphp.inide son serveur - en jouant avec les
php_value,SetEnvet autres joyeusetés que votre hébergeur daigne mettre à votre disposition dans un fichier.htaccess
Mais parfois c'est tellement le moyen âge que rien n'est disponible et que l'on pense vite à retourner aux stripslashes()… ou à se pendre. Alors voici une petite fonction de dernier recours qui vous sauvera la mise :
<?php
function wd_killMagicQuotes()
{
if (get_magic_quotes_gpc())
{
$_POST = array_map('wd_killMagicQuotes_callback', $_POST);
$_GET = array_map('wd_killMagicQuotes_callback', $_GET);
$_COOKIE = array_map('wd_killMagicQuotes_callback', $_COOKIE);
$_REQUEST = array_map('wd_killMagicQuotes_callback', $_REQUEST);
}
}
function wd_killMagicQuotes_callback($value)
{
return is_array($value) ? array_map(__FUNCTION__, $value) : stripslashes($value);
}
?>
Ainsi un petit wd_killMagicQuotes() au sommet de votre code vous rendra le sourire et soulagera vos doigts.