Conseil pour le $_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 : Conseil pour le $_POST

par gesualda » 02 oct. 2005, 14:07

Merci à tous :D

par rami » 02 oct. 2005, 13:48

empty() renvoit true si on lui passe une variable null.
Voir dans la doc:
http://fr.php.net/manual/fr/types.comparisons.php

Par contre, il faut se méfier de empty() car si tu lui donnes une chaîne ayant comme valeur '0', empty() renverra true.

par Cyrano » 02 oct. 2005, 13:39

Attention, empty implique qu'on traite nue variable définie. Mais si tu la définis à NULL, alors tu auras une erreur en testant avec empty;

Ce que tu peux faire:
$sens_a = isset($_POST['sens_a']) ? $_POST['sens_a']: "";
if(!empty($sens_a))
{
    echo("<p>Bla bla bla</p>\n");
}
En résumé :
  • isset() vérifie l'existence;
  • empty() vérifie si le contenu existe dans une variable existante.

par gesualda » 02 oct. 2005, 13:23

dans un premier temps je controle l'existence de l'envoie des posts, mais je ne sais pas si $sens_a existe
if(isset($_POST['send'])){
  $sens_a = $_POST['sens_a'];
if(isset($sens_a)){
blablabla
} 
Je controle donc avec un deuxième
if(isset($sens_a)){ 
Tu me dit que je n'ai pas besoin du deuxième isset, donc je sais pas si elle existe ou pas, ou bien a ce moment la, vaudrait il mieux remplacer "isset" par un
if(empty($sens_a)){ 


j'essaye surtout de comprendre, merci de vos explications

par rami » 02 oct. 2005, 13:09

Oui tu peux mais tu n'as pas besoin du deuxième isset():
if(isset($_POST['send'])){
  $sens_a = $_POST['sens_a'];
  blablabla
}
else{
  //traitement si $_POST['send'] n'est pas défini
}

par gesualda » 02 oct. 2005, 13:07

Alors donc si je comprend bien je pourrais raccourcir après avoir vérifier la validité du submit ici "send" comme cela:
if(isset($_POST['send'])){
  $sens_a = $_POST['sens_a'];
if(isset($sens_a)){
blablabla
}
}
:oops:

par Truc » 02 oct. 2005, 12:27

Salut, la 2eme proposition est la bonne . En effet dans la 1ere tu fait deja un appel a la variable POST pour l'affecter à $sens_a:
$sens_a = $_POST['sens_a'] ; 
Donc si cette meme variable POST n'existe pas tu aura une erreur.

Sur la 2eme proposition le isset que tu fait verifi l'existence de la variable avant meme qu'on appel a son contenu.
Ce que tu as du voir devait ressembler a ceci:
$sens_a="";
if(isset($_POST['sens_a']))
{
   $sens_a = $_POST['sens_a'] ;
   blablabla..
}
ensuite tu peut utiliser $sens_a dans le reste du code (si la variable a été initialisée avant.

ou encore
$sens_a = isset($_POST['sens_a']) ? $_POST['sens_a']: NULL;
qui aura pour meme effet d'affecter le contenu de la variable POST (si elle existe) a $sens_a sinon une affectation par défaut (ici NULL).

par rami » 02 oct. 2005, 12:27

Cela revient strictement à la même chose. Certains préfèrent stocker dans une variable (avec un nom plus court) les données de $_POST pour avoir moins à écrire plus tard. D'autres ne préfèrent pas utiliser de variables supplémentaires. En gros, c'est une question de goût. ;)

Conseil pour le $_POST

par gesualda » 02 oct. 2005, 12:16

Bonjour

Dans les formulaires, on récupère les données ainsi:
$_POST['sens_a'] 
J'ai lu quelque part que pour une question de comodité de code on pouvait raccourcir celui ci après le post:
$sens_a = $_POST['sens_a'] 
Donc si je veux faire un controle d'existance je peux procéder comme cela:
$sens_a = $_POST['sens_a'] ;
if(isset($sens_a)){
  blablabla
}
es ce correct ou bien faut-il faire ainsi:
if(isset($_POST['sens_a'])){
  blablabla
}
Si oui, pourquoi ?

Merci et désoler d'etre encore un bleu !! :D