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 :

Délimiter un test


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut Délimiter un test
    Bonsoir
    je viens exposer un probleme que je rencontre depuis tout a l'heure(et que j'arrive pas a resoudre) . je suis une debutante (pure debutante meme)en php et programmtion en generale.
    Donc voila je fais un formulaire avec controle des données. et je vourais controler que l'adresse email contient un "@" et un "."
    donc la je l'ai fait avec la fonction ereg() mais j'arrive pas a situer ou doit se terminer mon test vu que j'ai un autre test quii vient juste apres (controle de la confimation du mot de passe). voici un extrait de mon code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    if(!empty($_SESSION['nom'])&&!empty($_SESSION['prenom'])&&!empty($_SESSION['adresse'])&&
        !empty($_SESSION['cp'])&&!empty($_SESSION['ville'])&&!empty($_SESSION['telephone'])&&
        !empty($_SESSION['email'])&&!empty($_SESSION['pwd'])&&!empty($cpwd)&& $ok =='Valider'){
     
          if(ereg ('([a-zA-Z0-9])+ @([a-zA-Z0-9])\.([a-zA-z]{2,4})',$_SESSION['email']&& $ok=='Valider')){
            }else{
               echo"L'email saisi est invalide";
            }
                 if($cpwd!=$_SESSION['pwd']){
                     echo "Les mots de passe sont differents";
                  }    else{
     
                            $sql="INSERT INTO CLIENT values
                                ('','".$_SESSION['nom']."','".$_SESSION['prenom']."','".$_SESSION['adresse']."',
                                     '".$_SESSION['cp']."','".$_SESSION['ville']."','".$_SESSION['telephone']."',
                                       '".$_SESSION['email']."','".$_SESSION['pwd']."')";
     
                            $sql2=mysql_query($sql);
     
                          echo"Vous etes enregistré";
                       }
    }
                    if( empty($_SESSION['nom'])or empty($_SESSION['prenom'])or empty($_SESSION['adresse'])or
                        empty($_SESSION['cp'])or empty($_SESSION['ville'])or empty($_SESSION['telephone'])or
                        empty($_SESSION['email'])or empty($_SESSION['pwd'])or empty($cpwd)&& $ok =="Valider")
     
                          echo"(*) Remplir tous les champs";
    je vous remercie de votre d'avance.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Par défaut
    oui ta structure n'est pas tout à fait bonne :

    d'abord, et pour tout code, je te suggère fortement d'indenter ton code correctement, par exemple tous les if d'un même niveau avec la même indentation

    déjà tu verras rapidement que tu enregistres dans la base de données même si le mot de passe est différent ou si le mail est invalide

    ensuite : tu fais des contrôles des variables de sessions avec empty : cela contrôle si ta variable est vide ou non, et cela suppose donc qu'elle existe. je ne connais pas toute ta page et donc je vais peut-être écrire une grosse bêtise, mais je crois que tu devrais changer empty par isset (isset contrôle l'existence de la variable). si tu fais un empty d'une variable inexistante, php te génère une erreur

    Je te suggère donc de faire les tests dans l'ordre suivant :
    $enregistrer = true;
    if (mail invalide) { echo 'mail invalide'; $enregistrer = false; }
    if (password not ok) { echo 'mot de passe'; $enregistrer = false; }
    if (une session n'existe pas) { echo 'remplir les champs'; $enregister = false; }
    if ($enregistrer==true) { séquence d'enregistrement dans ta base }

    autre remarque : dans ton dernier if, tu mélanges des or (qui me paraissent logiques) avec un and sur $ok : à mon avis, tu devrais mettre la séquence des or entre parenthèses pour faire le and sur le total. je peux me tromper, cela dépend de la condition que tu souhaites réellement.

    et dernière remarque : tu dois gérer le fait qu'un champ n'est pas rempli et que $ok est différent de 'valider'

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut
    Citation Envoyé par francis m
    oui ta structure n'est pas tout à fait bonne :

    d'abord, et pour tout code, je te suggère fortement d'indenter ton code correctement, par exemple tous les if d'un même niveau avec la même indentation

    déjà tu verras rapidement que tu enregistres dans la base de données même si le mot de passe est différent ou si le mail est invalide

    ensuite : tu fais des contrôles des variables de sessions avec empty : cela contrôle si ta variable est vide ou non, et cela suppose donc qu'elle existe. je ne connais pas toute ta page et donc je vais peut-être écrire une grosse bêtise, mais je crois que tu devrais changer empty par isset (isset contrôle l'existence de la variable). si tu fais un empty d'une variable inexistante, php te génère une erreur

    Je te suggère donc de faire les tests dans l'ordre suivant :
    $enregistrer = true;
    if (mail invalide) { echo 'mail invalide'; $enregistrer = false; }
    if (password not ok) { echo 'mot de passe'; $enregistrer = false; }
    if (une session n'existe pas) { echo 'remplir les champs'; $enregister = false; }
    if ($enregistrer==true) { séquence d'enregistrement dans ta base }

    autre remarque : dans ton dernier if, tu mélanges des or (qui me paraissent logiques) avec un and sur $ok : à mon avis, tu devrais mettre la séquence des or entre parenthèses pour faire le and sur le total. je peux me tromper, cela dépend de la condition que tu souhaites réellement.

    et dernière remarque : tu dois gérer le fait qu'un champ n'est pas rempli et que $ok est différent de 'valider'
    En fait pour le dernier if j'ai l'ai remplacer par un "else" ce qui fait que sa fait moins redondant au niveau de la reecriture des variables postées.
    sinon pour le code que tu ma donné je vais l'essayer et je te dis ce qu'il en ai;
    merci encore

  4. #4
    Membre confirmé Avatar de monstroplante
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 107
    Par défaut
    Déja, ton ereg() est étrange. Normalement, le 2e argument devrait etre une chaine de caracteres. Hors, dans ton code, c'est un booléan (vrai/faux) :
    ereg ('([a-zA-Z0-9])+ @([a-zA-Z0-9])\.([a-zA-z]{2,4})',$_SESSION['email']&& $ok=='Valider')
    Pour t'en rendre compte, je te propose de tester ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ok='';	
    var_dump('truc'&& $ok=='Valider');
    'truc' est une chaine, mais comme tu t'en sert avec l'opérateur '&&' (et logique), php le transforme en true.

    Sinon, pour te simplifier la vie et éviter les conditions imbriquées trop complexe, je te conseil de décrarer une variable "$valid=true;" au début de tes tests. Si tu rencontre une erreeur, tu la passe à "false". A la fin de tes tests, il te suffit alors de ne faire le traitement que si "$valid==true". soit "if($valid)..."

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut
    Citation Envoyé par monstroplante
    Déja, ton ereg() est étrange. Normalement, le 2e argument devrait etre une chaine de caracteres. Hors, dans ton code, c'est un booléan (vrai/faux) :
    ereg ('([a-zA-Z0-9])+ @([a-zA-Z0-9])\.([a-zA-z]{2,4})',$_SESSION['email']&& $ok=='Valider')
    Pour t'en rendre compte, je te propose de tester ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ok='';	
    var_dump('truc'&& $ok=='Valider');
    'truc' est une chaine, mais comme tu t'en sert avec l'opérateur '&&' (et logique), php le transforme en true.

    Sinon, pour te simplifier la vie et éviter les conditions imbriquées trop complexe, je te conseil de décrarer une variable "$valid=true;" au début de tes tests. Si tu rencontre une erreeur, tu la passe à "false". A la fin de tes tests, il te suffit alors de ne faire le traitement que si "$valid==true". soit "if($valid)..."
    Bonjour
    pour le ereg() j'ai finalement vu que c'est plus logique qu eje ferme la parenthese juste apres le $_SESSION['email'].le "&& $ok=='Valider' est dans la parenthesee du if et non du ereg()
    .
    Sinon aussi ya une autre chose pour la fonction var_dump (je l'ai jamais vu je vais voir sur les tutoriels ce a quoi sa sert puis je l'essaie)
    merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Par défaut
    Citation Envoyé par monstroplante
    Déja, ton ereg() est étrange. Normalement, le 2e argument devrait etre une chaine de caracteres. Hors, dans ton code, c'est un booléan (vrai/faux) :
    ereg ('([a-zA-Z0-9])+ @([a-zA-Z0-9])\.([a-zA-z]{2,4})',$_SESSION['email']&& $ok=='Valider')
    Pour t'en rendre compte, je te propose de tester ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ok='';	
    var_dump('truc'&& $ok=='Valider');
    'truc' est une chaine, mais comme tu t'en sert avec l'opérateur '&&' (et logique), php le transforme en true.

    Sinon, pour te simplifier la vie et éviter les conditions imbriquées trop complexe, je te conseil de décrarer une variable "$valid=true;" au début de tes tests. Si tu rencontre une erreeur, tu la passe à "false". A la fin de tes tests, il te suffit alors de ne faire le traitement que si "$valid==true". soit "if($valid)..."
    Bonjour
    J'ai essayer le code que tu m'as donné je l'ai modifier voici ce que j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $mailbien=ereg ('([a-zA-Z0-9])+ @([a-zA-Z0-9])\.([a-zA-z]{2,4})',$_SESSION['email']);
    var_dump($mailbien);
    if(var_dump==false){
            echo" faut";
               }else{
                   echo"bien";
                     }
    j'obtiens que c'est toujours (fale meme si je rentre une adresse correcte.
    peut etre que j'ai mal utiliser cette fonction.
    pourrai tu me diriger vers quelques tutoriels ou c'est bien expliquer.
    merci

  7. #7
    Membre confirmé Avatar de monstroplante
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 107
    Par défaut
    Déja, tu devrais mettre ton code en forme correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $mailbien=ereg ('([a-zA-Z0-9])+ @([a-zA-Z0-9])\.([a-zA-z]{2,4})',$_SESSION['email']);
    var_dump($mailbien);
    if(var_dump==false){
    	echo" faut";
    }else{
    	echo"bien";
    }
    Ensuite, "var_dump" est une fonction qui te permet d'afficher les informations sur une variable. Donc "var_dump($mailbien);" te suffit à connaire le contenu de la variable "$mailbien" puisque les informations sur cette variables vont etre affichées sur ta page.
    "if(var_dump==false)" cette ligne ne veut rien dire... var_dump est une fonction, pas une variable... Donc il lui faut des "()" et de toute facon ce test n'est pas justifié.

    Je pense qu'il va faloir que tu potasses quesques cours. Il y en a de trés bons sur ce site...

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

Discussions similaires

  1. Script test de deux chaine avec if
    Par kacedda dans le forum Linux
    Réponses: 6
    Dernier message: 02/05/2003, 15h38
  2. [XMLRAD] test de nullité
    Par Pm dans le forum XMLRAD
    Réponses: 5
    Dernier message: 29/11/2002, 10h57
  3. Importer des fichiers textes délimités
    Par Invité dans le forum Outils
    Réponses: 2
    Dernier message: 23/09/2002, 13h56
  4. test collisions
    Par tatakinawa dans le forum OpenGL
    Réponses: 5
    Dernier message: 08/06/2002, 06h03

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