Résolu PHP trier les valeurs Asc ou Desc

Enzo34!

★REALITYGAMING★
Premium
Inscription
31 Janvier 2014
Messages
1 417
Réactions
329
Points
17 831
RGCoins
80
Bonsoir,
Débutant en Php je souhaiterais trier mes valeurs du plus petit au plus grand et inverse pour ce faire j'utilise Asc ou Desc précédent de Prix pour trier le prix, je récupère donc la valeur de mon select et je met sous forme dans mon url
?prix=asc ou desc cela fonctionne cependant j'aimerais savoir si cela présente un gros manque de sécurité ou pas trop car quand j’enlève asc et que je met une valeur alternative que la requête ne reconnais pas j'ai une erreur sql ^^
Merci
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 717
Réactions
8 509
Points
32 445
RGCoins
0
Tant que tu sécurises correctement tes entrées, il ne devrait pas y avoir de risque de faille, en général pour les tri comme ça on passe par du GET :) Passe toujours par des requêtes préparées
 

Enzo34!

★REALITYGAMING★
Premium
Inscription
31 Janvier 2014
Messages
1 417
Réactions
329
Points
17 831
RGCoins
80
Tant que tu sécurises correctement tes entrées, il ne devrait pas y avoir de risque de faille, en général pour les tri comme ça on passe par du GET :) Passe toujours par des requêtes préparées
$tri = $_GET['tri'] ?? '';
$req = $bdd->prépare(select et tout le bazar ensuite BY prix '.$tri.'');
ensuite j’exécute mais je vois pas tellement comment securisé ^^
la ça fonctionne mais je me dis que si quelqu'un de mal intentionné enlève asc et commence a faire une requête dedans ça pourrais poser problème ?
?tri=asc
?tri= DELETE
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 717
Réactions
8 509
Points
32 445
RGCoins
0
$tri = $_GET['tri'] ?? '';
$req = $bdd->prépare(select et tout le bazar ensuite BY prix '.$tri.'');
ensuite j’exécute mais je vois pas tellement comment securisé ^^
la ça fonctionne mais je me dis que si quelqu'un de mal intentionné enlève asc et commence a faire une requête dedans ça pourrais poser problème ?
?tri=asc
?tri= DELETE

Tu peux te contenter de vérifier si on a ?tri=[asc/desc], si c'est asc ou desc, dans ce cas tu prends la valeur, si c'est autre chose tu mets desc par défaut, comme ça on peut pas injecter de code
 
Cette réponse a aidé l'auteur de cette discussion !

Enzo34!

★REALITYGAMING★
Premium
Inscription
31 Janvier 2014
Messages
1 417
Réactions
329
Points
17 831
RGCoins
80
Tu peux te contenter de vérifier si on a ?tri=[asc/desc], si c'est asc ou desc, dans ce cas tu prends la valeur, si c'est autre chose tu mets desc par défaut, comme ça on peut pas injecter de code
D'accord donc ça existe réellement ce genre d'injection ?
 

Enzo34!

★REALITYGAMING★
Premium
Inscription
31 Janvier 2014
Messages
1 417
Réactions
329
Points
17 831
RGCoins
80
Oui certaines personnes mettent directement $_GET['tri'] dans la requête SQL ^^
Voici ma solution ^^ je la poste au cas quelqu’un cherche ^^

PHP:
if(isset($_GET['tri']) && $_GET['tri'] == "asc") {
    $orderby = 'ASC';
 }
 else {
    $orderby = 'DESC';
 }
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 717
Réactions
8 509
Points
32 445
RGCoins
0
Voici ma solution ^^ je la poste au cas quelqu’un cherche ^^

PHP:
if(isset($_GET['tri']) && $_GET['tri'] == "asc") {
    $orderby = 'ASC';
}
else {
    $orderby = 'DESC';
}
Tu peux même faire ça en une ligne :)

$orderBy = (!empty($_GET['tri']) && $_GET['tri'] == "asc") ? 'ASC' : 'DESC';

Si c'est "asc" alors tu prends ASC, si c'est autre chose, qu'importe, tu mets DESC
 

Enzo34!

★REALITYGAMING★
Premium
Inscription
31 Janvier 2014
Messages
1 417
Réactions
329
Points
17 831
RGCoins
80
Tu peux même faire ça en une ligne :)

$orderBy = (!empty($_GET['tri']) && $_GET['tri'] == "asc") ? 'ASC' : 'DESC';

Si c'est "asc" alors tu prends ASC, si c'est autre chose, qu'importe, tu mets DESC
Petite question mon select ne reste pas sur la données sélectionner pour mes input j'ai mis un echo de ma valeur entrer sauf que pour un select ça fonctionne pas trop ^^
 
Haut