Juste une confirmation

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 : Juste une confirmation

par dunbar » 26 avr. 2007, 22:25

Bah si au lieu de :
if(empty($_POST['modem']) || $_POST['modem']=="") { 
    echo "Vous devez introduire un chiffre ou laisser la valeur par défaut du champ modem il y avait le chiffre 0."; 
    exit(); 
} 
Tu fais :
if(empty($_POST['modem'])) { 
  $_POST['modem'] = "0";
} 
Ca devrais rendre ton champ facultatif et mettre une valeur par défaut s'il n'est pas renseigné :)
Effectivement :wink: merci @+

par Ryle » 26 avr. 2007, 20:06

Bah si au lieu de :
if(empty($_POST['modem']) || $_POST['modem']=="") { 
    echo "Vous devez introduire un chiffre ou laisser la valeur par défaut du champ modem il y avait le chiffre 0."; 
    exit(); 
} 
Tu fais :
if(empty($_POST['modem'])) { 
  $_POST['modem'] = "0";
} 
Ca devrais rendre ton champ facultatif et mettre une valeur par défaut s'il n'est pas renseigné :)

par dunbar » 26 avr. 2007, 16:25

Pour en revenir à ton cas, pourquoi mettre une valeur par défaut à 0 et rendre le champ obligatoire ? pourquoi ne pas simplement le laissé vide et facultatif ? au pire si tu as besoin du 0, il te suffit de l'affécter si jamais tu constates que le champ est resté vide
La raison est simple, c'est un formulaire de commande qui est envoyer par mail() et je préfère avoir
par exemple dans le mail ceci :
modem 0 pièce(s)
que ceci
modem pièce(s)
je trouve cela plus propre.
Et comme je sais que si je demande aux techniciens de mettre 0 si il ne commande pas cette pièce ils vont le faire 2 x et puis oups oublier.
Alors par contre la dernière proposition m'intèresse mais j'ai absolument aucune idée de la manière de faire :cry:

par Ryle » 26 avr. 2007, 09:55

C'est pas tant le problème de la fonction empty, c'est php pour qui : zéro (0), faux (FALSE), chaine vide ('') sont trois valeurs strictement identiques.
if (0 == FALSE) // vrai
if (0 == '') // vrai
if (FALSE == '') // vrai
La seule façon de différencier ces valeurs, c'est de considérer leurs types. Le premier est un nombre (int), le deuxième un booléen (boolean) et le dernier une chaine (String). Tu peux pour cela soit utiliser getType() pour connaitre le type d'une variable, soit utiliser les opérateurs "===" ou "!==" pour comparer valeur et type.
if (0 === FALSE) // faux, la valeur est la même, mais le type est différent (int / boolean)
if (0 === '') // faux
if (FALSE === '') // faux
Normalement, même si php n'est pas intransigeant sur la question, il ne faudrait comparer que des varibles de même type (ce qu'impose la plupart des autres langages). Ainsi pour comparer un nombre et une chaine, il faudrait convertir (cast) l'un des deux avant de pouvoir faire la comparaison :)

Pour en revenir à ton cas, pourquoi mettre une valeur par défaut à 0 et rendre le champ obligatoire ? pourquoi ne pas simplement le laissé vide et facultatif ? au pire si tu as besoin du 0, il te suffit de l'affécter si jamais tu constates que le champ est resté vide :)

par sylvaing26 » 25 avr. 2007, 19:12

http://www.manuelphp.com/php/function.empty.php
la fonction empty considère le zero comme vide !

par sylvaing26 » 25 avr. 2007, 19:07

essaie en mettant NULL

par dunbar » 25 avr. 2007, 18:52

Salut

Oui mais j'ai un gros soucis avec cette vérif
Mes champs par défaut ont une valeur de 0
if(empty($_POST['modem']) || $_POST['modem']=="")
    {
    echo "Vous devez introduire un chiffre ou laisser la valeur par défaut du champ modem il y avait le chiffre 0.";
    exit();
    }
    if(empty($_POST['modemcable']) || $_POST['modemcable']=="")
    {
    echo "Vous devez introduire un chiffre ou laisser la valeur par défaut du champ modemcable il y avait le chiffre 0.";
    exit();
    }
    if(empty($_POST['niu3']) || $_POST['modniu3em']=="")
    {
    echo "Vous devez introduire un chiffre ou laisser la valeur par défaut du champ niu3 il y avait le chiffre 0.";
    exit();
    }
    if(empty($_POST['niu4']) || $_POST['niu4']=="")
    {
    echo "Vous devez introduire un chiffre ou laisser la valeur par défaut du champ niu4 il y avait le chiffre 0.";
    exit();
    }
    if(empty($_POST['colvert']) || $_POST['colvert']=="")
    {
    echo "Vous devez introduire un chiffre ou laisser la valeur par défaut du champ colvert il y avait le chiffre 0.";
    exit();
    }
    if(empty($_POST['cable']) || $_POST['cable']=="")
    {
    echo "Vous devez introduire un chiffre ou laisser la valeur par défaut du champ cable il y avait le chiffre 0.";
    exit();
    }
Il ne prend pas le 0 en compte et crois qu'il est vide pourquoi ????

Merci

par Sékiltoyai » 25 avr. 2007, 17:59

C'est pas question d'être mieux ou pas, c'est qu'une vérification en js est facultative, alors qu'elle est indispensable au niveau du php...

par dunbar » 25 avr. 2007, 17:34

Ne serait-il pas plus judicieux de... éh ?! mais c'est moi R ?! grumpf... bon passons... ;) Ca serait-y pas mieux, disais-je avant qu'on ne m'interrompe, de tester la valeur dans $_POST ? Voire de tester si elle est bien définie ? Et encore plus mettre des crochets à ton tableau pour dire à php que tu veux ajouter un nouvel élément et pas juste écraser la variable ? :)
if( !isSet($_POST['prenom']) || empty($_POST['prenom'])) 
  $erreurs[] = "il manque votre prénom"; 
Salut,

L'exemple plus haut n'est pas de moi je viens de tomber dessus, c'est un site qui propose des formations en php entre autre :? et payante.
Quand à moi j'ai opter pour une vérification en js
function check1() {

if (document.commande.modem.value == '') {
alert('message erreur');
document.commande.modem.style.borderColor= 'red';
document.commande.modem.focus();
return false;
}
Si je ne trompe pas c'est aussi bien que la vérification en php :?:

Merci @+

par Ryle » 25 avr. 2007, 17:27

Ne serait-il pas plus judicieux de... éh ?! mais c'est moi R ?! grumpf... bon passons... ;) Ca serait-y pas mieux, disais-je avant qu'on ne m'interrompe, de tester la valeur dans $_POST ? Voire de tester si elle est bien définie ? Et encore plus mettre des crochets à ton tableau pour dire à php que tu veux ajouter un nouvel élément et pas juste écraser la variable ? :)
if( !isSet($_POST['prenom']) || empty($_POST['prenom'])) 
  $erreurs[] = "il manque votre prénom"; 

par dunbar » 25 avr. 2007, 15:56

Heu, ca sert à quoi de poser une question si tu as déjà une réponse ?

En effet, dans le premier code, les parenthèse ne sont pas toutes fermées...
A rien effectivement je voulais juste être certain :oops:

par orgerix » 25 avr. 2007, 15:52

Heu, ca sert à quoi de poser une question si tu as déjà une réponse ?

En effet, dans le premier code, les parenthèse ne sont pas toutes fermées...

Juste une confirmation

par dunbar » 25 avr. 2007, 15:48

Bonjour,

Je souhaiterais une confirmation svp voici un bout de code.
<?php
if($_POST){
   

   $erreurs = array();
   if( empty($prenom) $erreurs = "il manque votre prénom";
   if( empty($nom) $erreurs = "il manque votre nom";
   if( empty($email) $erreurs = "il manque votre email";
   if( empty($tel) $erreurs = "il manque votre téléphone";
   if( empty($message) $erreurs = "il manque votre message";

}
?>
Qui voie l'erreur :?:
Ne serais t'il pas plus judicieux comme dirais R.... :wink:
de faire ceci ?
<?php
if($_POST){
   

   $erreurs = array();
   if( empty($prenom)) $erreurs = "il manque votre prénom";
   if( empty($nom)) $erreurs = "il manque votre nom";
   if( empty($email)) $erreurs = "il manque votre email";
   if( empty($tel)) $erreurs = "il manque votre téléphone";
   if( empty($message)) $erreurs = "il manque votre message";

}
?>
D'avance merci :wink: