ORDER avec variable d'URL

rduvrac

Membre confirmé
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
 
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 ;)
 
  • J’aime
Réactions: molgow
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+
 
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