ORDER avec variable d'URL

rduvrac

Membre junior
29 Octobre 2004
25
1
Bonsoir

j'aimerai afficher une liste dans un ordre différent mais ce code ne marche pas.
Je passe une variable d'URL pour cela

ça, ça marche pas :
$query_RSutilisateurs = "SELECT * FROM passadminuser ORDER BY "$_GET['order']" ASC";
ça non plus :
$query_RSutilisateurs = "SELECT * FROM passadminuser ORDER BY $_GET['order'] ASC";

Comment l'écrire pour intégrer une variable d'URL dans cette ligne ?

merci
 

canibal

Membre confirmé
29 Mai 2005
393
27
38
San Jose, CA
primo il est extremement déconseiller de passer des variables par url et de les intégrer directement dans la requete sql car cela est une faille possible!!
pour intégrer il faut faire de la concaténation de chaîne avec l'objet .

$query_RSutilisateurs = "SELECT * FROM passadminuser ORDER BY ".$_GET['order']." ASC";


mais je te conseil de tester order pour ne pas avoir de surprise...

par exemple l'opérateur UNion ou bien si $_GET[]="toto OR 1=1" et tu te fais avoir enfin bref plein de jolie chose comme ça ;)
 

fissunix

Membre confirmé
12 Avril 2004
290
17
37
Fribourg (CH)
www.contesse.ch
Je suis assez d'accord avec toi Canibal, c'est pas le top de laisser la variable original dans la requête. Si par exemple tu passes un ORDER=saluttoi dans l'url, tu généres une erreur.

Enfin, si tu voulais quand même passer une variable de type array() dans une requête, tu peux le faire de la manière suivante:

$query_RSutilisateurs = "SELECT * FROM passadminuser ORDER BY {$_GET['order']} ASC";

A+
 

molgow

Vétéran
Club MacG
4 Janvier 2002
5 494
613
38
Suisse
Ce problème de sécurité s'appelle le SQL Injection, et il est loin d'être négligeable. Tu prends le risque de permettre à quelqu'un de passer outre les protections de sécurité si ton script sert à protéger quelque chose.

En cherchant sur Google, on trouve pas mal d'info là dessus : http://www.unixwiz.net/techtips/sql-injection.html