22-05-2007, 09:10 PM
addslashes n'est pas la meilleure méthode pour les requêtes SQL. Il vaut mieux utiliser la fonction d'échappement dédiée (pour mysql c'est mysql_real_escape_string()), et plutôt que de compter sur magic_quotes il vaut mieux considérer qu'il est désactivé, construire ses scripts SANS magic_quotes, et pour la compatibilité, DESLASHER les variables qui viennent de l'utilisateur, afin d'utiliser au cas par cas les fonctions de protections qui conviennent : mysql_real_escape_string(), escapeshellarg(), addslashes(), strip_tags(), etc...
Code PHP :
<?php
if(get_magic_quotes_gpc()) {
foreach ($_GET as &$var) $var = stripslashes($var);
foreach ($_POST as &$var) $var = stripslashes($var);
}
Ceci permet de travailler dans un environnement "non corrompu" par une transformation implicite des données reçues, et d'ailleurs depuis PHP5 les magic_quotes sont désactivées par défaut.