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.

Pas de commentaires

Laisser un commentaire