Théophile
Invité n'ayant pas de compte PHPfrance
30 juil. 2006, 11:23
Re..
Je veux bien ne pas me servir de quote_smart

mais :
1. Comment protéger mes données de l'injection ?
2. J'ai l'impression (comme je débute, je n'affirme rien !) que mes requêtes ne fonctionnent pas lorsque je ne protège pas mes données avec quote_smart.
Ainsi, sans quote_smart, la requête suivante ne marche pas :
Code : Tout sélectionner
$verif = "SELECT (nom && adeli) FROM presc_fr WHERE (nom = $_SESSION[pcnom] && adeli = $_SESSION[pcidentification])";
$reqverif = mysql_query($verif);
$resverif = mysql_num_rows($reqverif);
que j'applique ou non mysql_real_escape_string à mes variables de session.
Le navigateur m'indique :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ... on line ...
En revanche, si au préalable, j'écris :
function quote_smart($value)
{
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if (!is_numeric($value)) {
$value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
}
$_SESSION['pcnom'] = quote_smart($_SESSION['pcnom']);
$_SESSION['pcidentification'] = quote_smart($_SESSION['pcidentification']);
ma requête fonctionne...
Naturellement, avant mes requêtes (je ne l'indique pas pour ne pas alourdir le "post'" figurent mes identifiants de connexion à la base de données).
Pourquoi ??? Je suis un peu perdu...
Merci pour votre aide.
Amitiés,
Théo