IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

isset() toujours vrai avec $_POST


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Points : 47
    Points
    47
    Par défaut isset() toujours vrai avec $_POST
    bonjour a tous,
    j'ai un probleme tres simple mais je ne vois pas OU est l'erreur. En fait je demande d'entrer un login et un mot de passe, ensuite je verifie si ils ont bien ete renseigne avec la fonction isset()
    le login il est bien verifie mais pas le mot de passe. Qu'un mot de passe sois donne ou pas c'est la meme chose ... isset($_POST['motPasse']) vaut toujours VRAI
    voici le code de la page html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form method="post" action="creerCompte.php">
    Choisissez votre login (15 caractères max)
    <input type="text" name="login" size="12" maxlength="15" /><br />
    Choisissez votre mot de passe (10 caractères max) 
    <input type="password" name="motPasse" size="12" maxlength="10" /><br /><br />
    <input type="submit" value="Créer" /><br />
    et la partie php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	if (!isset($_POST['login'])) {
    		exit("Erreur : login invalide");
    	}
    	if (!isset($_POST['motPasse'])) {
    		exit("Erreur : mot de passe invalide");
    	}
    	$var = $_POST['login'];
    	$var = trim($var);
    	if (strlen($var) == 0) {
    		exit("Erreur : login invalide");
    	}
    	echo "Ok, tout est valide";

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    j'ai un probleme tres simple mais je ne vois pas OU est l'erreur. En fait je demande d'entrer un login et un mot de passe, ensuite je verifie si ils ont bien ete renseigne avec la fonction isset()
    Pour verifier si un champ a bien été renseigné utilise plutot la fonction empty()

    Car isset sert à verifier si une varible existe. Or meme si le mot de pass n'est pas remplis, ton formulaire renverra une valeur ' ' ce qui équivaut à un caractère vide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if (empty($_POST['login'])) {
          exit("Erreur : login invalide");
       }
       if (empty($_POST['motPasse'])) {
          exit("Erreur : mot de passe invalide");
       }
       $var = $_POST['login'];
       $var = trim($var);
       if (strlen($var) == 0) {
          exit("Erreur : login invalide");
       }
       echo "Ok, tout est valide";

  3. #3
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Ce qu'il faut comprendre c'est que isset vérifie qu'une variable *existe* mais ne donne aucune indication sur sa valeur.

    isset() -> La variable existe mais peut avoir la valeur NULL.
    isset() && !empty() -> La variable existe et sa valeur n'est pas *vide*.

    U see ?

  4. #4
    Futur Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    la fonction isset sert à déterminer si une variable est affecté ou pas donc c'est normal que dans ton code ta variable est true

    utilise plutôt empty() pour vérifier si ta variabe est vide ou non ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(empty($_POST[motdepasse]) ){
    die("erreur");
     
    }

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Points : 47
    Points
    47
    Par défaut Merci !
    Merci beaucoup, le probleme est arrange :-)

  6. #6
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Alors il faut cliquer sur !

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par aymen
    utilise plutôt empty() pour vérifier si ta variabe est vide ou non ..
    Non !
    la chaine '0' n'est pas vide pourtant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    $toto = '0';
    var_dump(empty($toto));
    ?>


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Allow from X.X.X.X toujours vrai même avec Y.Y.Y.Y
    Par rebolon dans le forum Apache
    Réponses: 1
    Dernier message: 21/12/2007, 12h35
  2. pb avec $_post
    Par marie20 dans le forum Langage
    Réponses: 9
    Dernier message: 13/03/2007, 18h54
  3. [ASP/Flash] Toujours soucis avec sauts de ligne :(
    Par delavega dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 15/12/2006, 19h31
  4. Toujours utiliser avec...
    Par grandmaes dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 18/03/2006, 16h40
  5. WHERE toujours vrai
    Par Original Prankster dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/09/2005, 10h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo