$_SESSION + mysql_real_escape_string() dans une requete... utile ou pas ?

Répondre
Sammuel
le 01/05/2007 à 00:55
Sammuel
Bonjour,

Une question que je me pose depuis un moment et dont j'aimerais bien avoir votre avis !

Dans une simple requete SQL, est ce utile d'englober une variable de session du genre $_SESSION['idmembre'] par un mysql_real_escape_string() ?

Exemple :
$sql = "SELECT pseudo FROM membre WHERE idmembre = '".mysql_real_escape_string($_SESSION['idmembre'])."'"


Merci !

++
LA GLOBULE
le 01/05/2007 à 01:29
LA GLOBULE
Pour tout ce qui est numérique (c'est à dire là où tu t'attends à avoir un truc numérique pour imposer une condition sur un champ SQL de type INT), je te conseille d'utiliser intval au lieu de mysql_real_escape_string.

Voila :)
Bzh
le 01/05/2007 à 12:16
Bzh
Tout depends de le façon dont ta variable de session reçoit sa valeur !

Si c'est l'id du membre qui a été récupéré directement de ta base de données et donc dans ce cas là, non ! Maintenant, si la valeur contenu de ta variable vient de l'extérieur de ton serveur, alors là OUI !
LA GLOBULE
le 01/05/2007 à 13:05
LA GLOBULE
Dans tous les cas, si le champ SQL est de type INT, c'est intval que l'on doit utiliser, peu importe ce que contient ta variable de session.
MySQL s'attend à recevoir un INT, tu lui fournis un INT avec intval.

Puis de toutes facons, si tu ne fournis pas un INT à MySQL, il se le fera tout seul son intval, donc autant passer cette étape et lui fournir directement un INT.
LA GLOBULE
le 01/05/2007 à 13:14
LA GLOBULE
Et voici la preuve :

mysql> CREATE TABLE `test` (`champ` INT NOT NULL);
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO test (champ) VALUES ('123test');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> SELECT * FROM test;
+-------+
| champ |
+-------+
| 123 |
+-------+
1 row in set (0.00 sec)


MySQL fait son propre intval, donc autant le faire avant lui et éviter de lui fournir une string (car le intval PHP aurait directement transformé la chaine en '123').
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours