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

Répondre
Sammuel
Sammuel
Déconnecté
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 :
  1.  
  2. $sql = "SELECT pseudo FROM membre WHERE idmembre = '".mysql_real_escape_string($_SESSION['idmembre'])."'"
  3.  


Merci !

++
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
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
Bzh
Déconnecté
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
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
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
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Et voici la preuve :

  1. mysql> CREATE TABLE `test` (`champ` INT NOT NULL);
  2. Query OK, 0 rows affected (0.01 sec)
  3.  
  4. mysql> INSERT INTO test (champ) VALUES ('123test');
  5. Query OK, 1 row affected, 1 warning (0.00 sec)
  6.  
  7. mysql> SELECT * FROM test;
  8. +-------+
  9. | champ |
  10. +-------+
  11. | 123 |
  12. +-------+
  13. 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
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Php - Breizh Blog