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 ?

  1. Soit j’utilise la fonction stripSlashes($_GET[« etat »]) qui supprime les backslashes
  2. 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

0 réponses

Laisser un commentaire

Participez-vous à la discussion?
N'hésitez pas à contribuer!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.