problème de requete sql - PHP - Programmation
Marsh Posté le 03-05-2007 à 21:40:14
Encore un problème d'apostrophe.
Quand un programme voit une apsotrophe, il va bêtement jusqu'à l'apostophe suivante. Ce qui donne :
$sql = "SELECT id, ville, pays, image, source, site, commentaire FROM webcams WHERE pays='$_GET['pays']'
ORDER BY id";
Pour éviter ça, écrire :
$sql = "SELECT id, ville, pays, image, source, site, commentaire FROM webcams WHERE pays='".$_GET['pays']."' ORDER BY id"; |
Marsh Posté le 04-05-2007 à 10:56:51
oui, et pour éviter l'injection SQL qui est dangereuse, il faudrait au préalable typer ta variable ...
$sql = sprintf("SELECT id, ville, pays, image, source, site, commentaire FROM webcams WHERE pays='%s' ORDER BY id;",$_GET['pays']);
puis la clause du ORDER BY est-elle sous-entendue si non précisée ? ASC / DESC ?
Marsh Posté le 05-05-2007 à 11:34:32
J'aimerais bien un petite explication s'il te plait sur ton typage de variable
Marsh Posté le 05-05-2007 à 13:11:13
En fait, $_GET récupère une variable venant de l'URL ... Or comme toute URL, ça peut se modifier sans trop de souci.
La fonction sprintf (http://fr.php.net/manual/fr/function.sprintf.php) permet de typer une variable avec des marqueurs :
- %d : un entier ("decimal" )
- %s : une chaine de caractères ("string" )
- %f : un nombre à virgule ("float" )
... (RTFM )
Rien ne te prouve que ce qui est dans $_GET['pays']ne soit réellement une chaine de caractères de type "string" ...
Par exemple, écrire
Code :
|
affichera $prenom en tant que string (%s) et $age en tant que decimal (%d)
je mets $prenom, $age dans le même ordre qu'apparaissent les "marqueurs" dans la chaine que je veux retourner.
Marsh Posté le 05-05-2007 à 16:56:17
Sauf si j'ai rien compris, ce typage n'aide en rien contre les injection Sql.
puisqu'une injection sql, c'est remplacer le le pays (dans le $_get) par un bout de requete sql qui est sera lui aussi une chaine string.
non ?
Marsh Posté le 03-05-2007 à 21:11:41
Bonsoir.
J'ai un petit problème de requete sql
$sql = "SELECT id, ville, pays, image, source, site, commentaire FROM webcams WHERE pays='$_GET['pays']'
ORDER BY id";
et cette erreur:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/www/23a8702f964c3b2d2b4e5dfc338a526e/web/webcamstt.php on line 126
---------------
Toute l'actualité météo en continu http://www.meteo-world.com