Résolu Get ou Post

Enzo34!

★REALITYGAMING★
Premium
Inscription
31 Janvier 2014
Messages
1 417
Réactions
329
Points
17 831
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
 

Enzo34!

★REALITYGAMING★
Premium
Inscription
31 Janvier 2014
Messages
1 417
Réactions
329
Points
17 831
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 706
Réactions
8 492
Points
32 425
$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 !

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 706
Réactions
8 492
Points
32 425
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
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