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 à Off dans le fichier php.ini de son serveur
  • en jouant avec les php_value, SetEnv et 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.

Cet article a frappé votre imagination ? Abonnez-vous pour être informé de ceux à venir.

Commenter

Un avis sur cet article ? Partagez-le et faites vous des amis (ou pas) !

Marquer

Del.icio.us / Google / Live / Ma.gnolia / Yahoo

Laisser un commentaire

Pour ne pas retrouver mon blog noyé de spam à mon retour de vacances, les nouveaux commentaires devront attendre d'être approuvés pour apparaitre sur le blog. Je vous remercie de votre compréhension et vous souhaite un bel été.

 
 Souhaitez-vous être informé par E-Mail d'une réponse à votre message ?