Dans un formulaire HTML, je saisis dans une balise une valeur contenant une apostrophe, disons :
<input type="text" name="etat" value="l'ouragan est passé" />
A la récupération du paramètre « etat » j’obtiens : $_GET[« etat »]= « l’ouragan est passé », avec un backslash agaçant. Que faire ?
- Soit j’utilise la fonction stripSlashes($_GET[« etat »]) qui supprime les backslashes
- Soit je modifie le paramètre magic_quotes_gpc de mon fichier php.ini de WAMP. Imposer la valeur de magic_quotes_gpc à « off », empêchera l’ajout de backslashes au passage de paramètres par formulaire mais aussi dans les cookies. Sous l’hébergeur PHPNux, il est possible de modifier ce paramètre directement dans votre espace client, sous 1&1, il faut créer un fichier php.ini à l’aide d’un bloc note contenant :
magic_quotes_gpc = off
et de le placer dans les répertoires de votre site nécessitant cette fonctionnalité.
Chez OVH il faut rajouter la ligne suivante dans le fichier .htacces
SetEnv MAGIC_QUOTES 0
Les magic_quotes visent à protéger les formulaires des injections SQL, mais il est fortement recommendé d’utiliser plutôt la fonction mysql_real_escape_string() plus complète qui neutralise, en les échappant tous les caractères susceptibles d’être utilisés lors d’une injection SQL :
- les guillemets simples ‘ ;
- les guillemets doubles » :
- les slashes / ;
- les caractères NULL ;
- les caractères suivants : n, r, x00 et x1a.
Avertissement :
mysql_real_escape_string() est dépréciée depuis PHP 5.5.0
source : http://www.phpfacile.com/creer_un_site_web_en_php/formulaire_1.php5
Laisser un commentaire
Participez-vous à la discussion?N'hésitez pas à contribuer!