Tableaux type $_POST

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 : Tableaux type $_POST

par Ryle » 06 juin 2006, 10:08

Argh, il fait du chantage en plus ?! :)

Dans ton code précédent, c'est parce qu'il manquait l'underscore à $_POST:
$type_formulaire = $_POST[type];
En revanche dans le dernier, tu devrais bien récuperer la valeur (si l'index "nomasupprimer" est bien présent, sinon il sera vide, voire génèrera une erreur). Un p'tit test :
$variable = "";
if(isSet($_POST["nomasupprimer"])) {
  $variable = $_POST["nomasupprimer"];
  echo $variable ." / ". $_POST["nomasupprimer"];
}
else
  echo "L'index \"nomasupprimer\" n'existe pas dans $_POST";

par Invité » 05 juin 2006, 20:02

Oky merci bcp mais au fait pkoi çà ne marche pas lorsque j'essais de la passer dans une variable :

$variable = $_POST["nomasupprimer"];

??

Merci

PS: je cliquerais sur resolu lorsque tu auras (lol c'est pas un ordre non plus ! :D ) repondu a cette derniere question. En tout cas merci bcp

par Ryle » 05 juin 2006, 16:11

Un p'tit clic sur le bouton résolu ? ;)

En principe ta solution fonctionnait tout aussi bien - même si personnellement j'aurais utilisé un champ caché (input de type hidden) plutot que de modifier le bouton... -
Ton soucis provenait de l'oubli de l'underscore (souligné) dans $_POST :)

merci

par kilianh » 05 juin 2006, 16:02

Ca marche parfaitement, merci bcp. J'avais encore le temps de chercher, mon probleme c'est que je ne connais pas trop les fonctions et commandes specifiques telles IsSet. C'est avec l'experience que çà viendra.

Sinon j'etais parti sur un bidouillage, çà marchait presque. j'avais changé le nom de mes buttons dans les formulaires pour obtenir ceci :

Array ( [INSEEasupprimer] => 1760462498030 [type] => INSEE )
Array ( [nomasupprimer] => 1760462498030 [type] => Nom )
et
Array ( [mailasupprimer] => 1760462498030 [type] => Mail )

et j'avais reussi a afficher le contenu de type en faisant : echo "$_POST[type]";
mais lorsque je voulais assigner ce contenu a une variable pour enfin faire mes tests : $type_formulaire = $POST[type];

ca m'affichait une erreure que je ne comprenais pas trop.

'fin ceci dit, maintenant çà marche et je t'en suis tres reconnaissant.

Cdt,

Mickael

par zeus » 05 juin 2006, 15:54

A mon avis, tu penses que INSEEasupprimer est un index qui contient les valeurs de ton formulaire du même nom :-k

Alors qu'en fait, tu doit avoir un index qui porte l'attribut name="INSEEasupprimer"

par Ryle » 05 juin 2006, 15:41

$_POST (ou $_GET) sont des tableaux associatifs, c'est à dire qu'à une clé ou index, est associé une valeur. Dans ton cas ce sont les champs et valeur du formulaire :

Code : Tout sélectionner

Array ( [INSEEasupprimer] => 1760462498030 [envoyer] => Supprimer )
A la clé "INSEEasupprimer" est associée la valeur 1760462498030
A la clé "envoyer" est associée la valeur "Supprimer"

Ainsi si tu affiches $_POST["INSEEasupprimer"] (c'est à dire la valeur de l'index "INSEEasupprimer" du tableau $_POST) tu obtiendras la valeur 1760462498030.

Tu cherches donc à savoir si l'index "INSEEasupprimer" (respectivement "nomasupprimer", ou "mailasupprimer") est défini dans le tableau pour exécuter le traitement associé. Le plus simple pour cela est d'utiliser la fonction isSet() qui te permet de savoir si un élément est défini :
if(isSet($_POST["INSEEasupprimer"] )) {
  // l'index est défini, j'exécute la partie du code spécifique à insee
  // je récupère la valeur concernée dans $_POST["INSEEasupprimer"] 
}
if(isSet($_POST["nomasupprimer"] )) {
  ...
}
...
:)

Tableaux type $_POST

par kilianh » 05 juin 2006, 15:22

Bonjour,

Voila j'ai une page HTML qui contient plusieurs formulaires, je veux faire une recherche sur une base de donnée et pour cela je propose 3 types de recherches :
une par Nom (nomasupprimer), l'autre par Mail (mailasupprimer ) et la derniere par n°INSEE (INSEEasupprimer).
J'ai donc en fonction de ce choix, 1 des 3 formulaires qui s'affiche.
Ces 3 formulaires envois leur données a la meme page PHP.

donc j'effectue en debut de script PHP un test pour savoir quel formulaire a envoyé ses données : nomasupprimer, mailasupprimer ou INSEEasupprimer mais c'est ici que je bute, c'est tout bete mais je ne sais pas comment utiliser efficacement le tableaux $_POST.

par exemple si j'envois avec le formulaire INSEE(INSEEasupprimer) et que je fais un print_r j'obtient ceci :

Array ( [INSEEasupprimer] => 1760462498030 [envoyer] => Supprimer )

et j'aimerais pouvoir isoler le contenu dans les premiers [...]
comme çà je peux faire ma requete SQL en fonction du formulaire utilisé.

J'espere avoir été clair. Merci