$_SESSION + mysql_real_escape_string() dans une requete... utile ou pas ?
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 !
++
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 :)
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 !
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.
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').
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: