Résolu PHP trier les valeurs Asc ou Desc

Enzo34!

★REALITYGAMING★
Premium
Inscription
31 Janvier 2014
Messages
1 417
Réactions
329
Points
20 981
RGCoins
925
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
 
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
 
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
 
$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 !
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 ?
 
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';
 }
 
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
 
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 ^^
 
Retour
Haut