Formulaire en GET

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Formulaire en GET

Re: Formulaire en GET

par Julien_37 » 26 sept. 2010, 22:49

Okééé

il considere 0 comme une valeur existante, je dois donc écrire:

Code : Tout sélectionner

else { $choix1 = NULL; } quand je check mes variables ?

Re: Formulaire en GET

par Cyrano » 26 sept. 2010, 20:27

Parce que la valeur zéro est différente de null. Null, c'est l'absence de valeur, même pas une chaine vide.
Donc si tu laisses l'affichage de base, ce sont les premières balises option qio sont affichées et elles ont pour valeur zéro dans les deux cas. L'url est donc logiquement avec choix1=0 et choix2 = 0.

Re: Formulaire en GET

par Julien_37 » 26 sept. 2010, 18:24

Hello,
je n'ai toujours pas résolu mon problème, voici une page de test :

Code : Tout sélectionner

if(isset($_GET['choix1'])) { $choix1 = $_GET['choix1']; } if(isset($_GET['choix2'])) { $choix2 = $_GET['choix1']; } echo '<center>'.$choix1.' / '.$choix2.'</center>'; ?> <HTML> <HEAD> <TITLE> GET </TITLE> </HEAD> <BODY> <br><br> <center> <FORM name='test' method='get' action='index.php'> <SELECT name='choix1'> <option value='0'>choix 1</option> <option value='A1'>A1</option> <option value='A2'>A2</option> </SELECT>&nbsp;&nbsp; <SELECT name='choix2'> <option value='0'>choix 2</option> <option value='B1'>A1</option> <option value='B2'>A2</option> </SELECT>&nbsp;&nbsp; <br><br> <input type='submit' value='valider'> </FORM> </center> </BODY> </HTML>
Est-ce que quelqu'un peut m'expliquer pourquoi quand je ne fais aucun choix (valeurs nulles), j'obtiens une url du type index.php?choix1=0&choix2=0 et non pas index.php ? Je ne comprend pas comment ne pas incrémenter l'url si une valeur du formulaire est nulle.

Merci pour vos réponses.

Re: Formulaire en GET

par Julien_37 » 25 sept. 2010, 10:31

Ok, j'ai bien vérifié les valeurs effectivement, maintenant ayant 4 filtres, j'ai donc 16 possibilités, mais je ne pense pas qu'il soit utile de les écrire une par une...
J'ai écrit la premiere, cad si toutes les variables sont nulles, soit 'xx'. Je ne sais comment concatener ma requête suivant le résultat des autres valeurs valeurs... je ne m'y prend peut-être pas comme il faut.
Quelqu'un pourrait m'aiguiller?
Merci, Julien

Code : Tout sélectionner

if (isset($_GET['f_designation'])) { $f_designation = $_GET['f_designation']; } else { $f_designation = 'xx'; } if (isset($_GET['f_univers'])) { $f_univers = $_GET['f_univers']; } else { $f_univers = 'xx'; } if (isset($_GET['f_destination'])) { $f_destination = $_GET['f_destination']; } else { $f_destination = 'xx'; } if (isset($_GET['f_status'])) { $f_status = $_GET['f_status']; } else { $f_status = 'xx'; } $requete = "SELECT * FROM produits"; if ($f_designation == 'xx' && $f_univers == 'xx' && $f_destination == 'xx' && $f_status == 'xx') { $requete = "SELECT * FROM produits"; }

Re: Formulaire en GET

par AoSiX » 24 sept. 2010, 13:40

Peut-être qu'il serait opportun de valider la donnée avant de l'injecter dans une requête SQL.
J'enlèverai même le peut-être, il faut toujours vérifier !

NEVER TRUST USER INPUT

Re: Formulaire en GET

par Cyrano » 24 sept. 2010, 13:26

Peut-être qu'il serait opportun de valider la donnée avant de l'injecter dans une requête SQL. En interceptant ton paramètre, vérifie que sa valeur soit valide pour la requête et si elle ne l'est pas, tu ré-affiches la page sans exécuter la requête et éventuellement tu affiches un message du genre "Vous devez sélectionner un des titres" ou quelque chose d'approchant.

Formulaire en GET

par Julien_37 » 24 sept. 2010, 12:55

Bonjour,

j'ai un problème que je comprends bien mais que je n'arrive pas à interpréter via php.

Via une base de données, je liste tous mes articles avec leur valeurs de champs, jusqu'ici rien de méchant.
Ensuite je crée un formulaire sur cette même page en méthod GET afin d'appliquer des filtres de recherche qui vont agir sur la requête initiale. ("SELECT * FROM articles").
Mes filtres sont des menus déroulant, SELECT et OPTION. Je rajoute un bouton submit pour valider ma recherche (pour l'ensemble des filtres, pas de bouton pour chaque filtre)

Mon problème est le suivant, quand la valeur d'un filtre est nulle (le titre du filtre en option n°1), la valeur apparait dans l'url , admin_article.php?type='0' par exemple.

moi je ne veux pas de cette valeur dans l'url puisqu'elle est nulle, et du coup ma requête est faussée. Comment dois-je procéder pour que l'url s'incrémente automatiquement suivant la valeur des filtres? Sachant que j'incrémente ma requête suivant le filtre.
A titre d'exemple, voici une url finale qui du coup ne donne rien, normal... :
http://localhost/admin_prod.php?f_type= ... _status='0'

En vous remerciant, Julien.