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 :

Renvoi inattendu dans une condition


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut Renvoi inattendu dans une condition
    Bonjour,
    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
     
    //Retour d'erreur
    $error = '';
    if(!empty($_POST['action'])){
        if($_POST['action']=='register'){
            if(!empty($_POST['email']) AND !empty($_POST['pswd1']) AND !empty($_POST['pswd2']) AND $_POST['pswd1']==$_POST['pswd2'] AND preg_match('/^([^@\s<&>]+)@(?:([-a-z0-9]+)\.)+([a-z]{2,})$/i', $_POST['email'])){
          				if(checkEmail($_POST['email'])==0){
                				   if( !insertClient( $_POST['email'], md5($_POST['pswd1']) ) ){ 
    												 $error = 'Compte non créé';
    											 }
                					 else{
    											   $error = 'Compte créé avec succès.<br />Vous pouvez à présent vous identifiez.';
    											 }
          				}
    							else{
    							 $error = 'Cet email existe déjà, compte non créé.';
    							}
            }
    				else{
    				  $error = 'Veillez à bien remplir vos informations pour la création de votre compte.';
    				}
        }
    Ce bout de permet une inscription au site. Il marche bien mais le retour $error lorsqu'un compte a été créé devrait me renvoyer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $error = 'Compte créé avec succès.<br />Vous pouvez à présent vous identifiez.';
    bizar j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $error = 'Compte non créé';
    Ca bug où?

  2. #2
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 13
    Points : 16
    Points
    16
    Par défaut
    Bonsoir Okoweb,

    Visiblement, comme le dis l'adage, ta question est bien posée et la réponse est à moitié dedans
    Il semble que ça bug au niveau de ta fonction insertClient non ?
    Tu pourrais nous donner le corps de cette fonction pour éventuellement voir ce qui cloche à ce niveau là ?

  3. #3
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    utilise filter_var(, FILTER_VALIDATE_EMAIL) pour valider les mails. c'est mieux !

    on peut pas répondre ya trop de choses qui ne sont pas connues.

  4. #4
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Citation Envoyé par gene69 Voir le message
    utilise filter_var(, FILTER_VALIDATE_EMAIL) pour valider les mails. c'est mieux !
    Pourquoi ? un argument ?

  5. #5
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    yes
    1) plus on l'utilise moins on trouve des expressions régulieres hasardeuses comme celle-ci.
    2) c'est plus lisible
    3) j'ai aucune idée si c'est plus performant, mais n'oublions pas qu'on compare à une expression réguliere...

  6. #6
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Citation Envoyé par gene69 Voir le message
    yes
    1) plus on l'utilise moins on trouve des expressions régulieres hasardeuses comme celle-ci.
    2) c'est plus lisible
    3) j'ai aucune idée si c'est plus performant, mais n'oublions pas qu'on compare à une expression réguliere...
    je m'attendais plus à un argument de rapidité d'exécution

    1) les regex faut toujours les employer pour bien se les approprier y'en a partout
    2) mouais...
    3) A mon avis moins performant, filter_var utilise probablement les regex pour valider (ce n'est que mon avis)

    Perso j'ai jamais trouvé une utilité à cette fonction, je suis peut être un peu vieux jeu mais je préfère tout faire avec les regex, au moins je sais sur qui taper si ca marche pô

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut Code de mes fonctions à ce niveau
    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
    29
    30
    31
    32
    33
    34
    35
     
    //Comptes clients
    function insertClient($email, $pswd){
    	global $db;
    	$sql = 'INSERT INTO clients (email, password) VALUES (:email, :pswd)';
    	$statement = $db->prepare($sql);
    	$statement->execute(array(':email' => $email, ':pswd'=> $pswd ));
    }
     
    function checkEmail($email){
    	global $db;
    	$sql = 'SELECT count(*) as nbre FROM clients WHERE email=:email';
    	$statement = $db->prepare($sql);
    	$statement->execute(array(':email' => $email));
    	$tabl_result = $statement->fetch();
    	return $tabl_result['nbre'];
    }
     
    function checkClient($email, $pswd){
    	global $db;
    	$sql = 'SELECT count(*) as nbre FROM clients WHERE email=:email AND password=:pswd';
    	$statement = $db->prepare($sql);
    	$statement->execute(array(':email' => $email, ':pswd' => $pswd));
    	$tabl_result = $statement->fetch();
    	return $tabl_result['nbre'];
    }
     
    function infoClient($email){
    	global $db;
    	$sql = 'SELECT * FROM clients WHERE email=:email';
    	$statement = $db->prepare($sql);
    	$statement->execute(array(':email' => $email));
    	$tabl_result = $statement->fetch();
    	return $_ENV['client'] = $tabl_result['id'];
    }

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Il manque une valeur de retour (return) à insertClient, en ces circonstances PHP renvoie NULL (valeur par défaut). Ainsi, le test !insertClient(...) est toujours vrai.

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

Discussions similaires

  1. [JSP] Inclusion dans une condition d'un fichier jsp
    Par Fmassiera dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 07/02/2006, 20h14
  2. [ms sql server 2000] top 1 dans une condition de jointure ?
    Par sylvkin dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/10/2005, 17h10
  3. Problème dans une condition
    Par gibet_b dans le forum Linux
    Réponses: 4
    Dernier message: 31/05/2005, 10h19
  4. Fonction MAX dans une condition WHERE
    Par borgfabr dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/10/2004, 16h06
  5. Réponses: 2
    Dernier message: 24/06/2004, 09h13

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