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 :

[Mail] Vérification de données


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 11
    Par défaut [Mail] Vérification de données
    Bonjour !

    Je souhaite créer une fonction qui vérifie lors d'une inscription si une adresse e-mail et un numéro de compte sont déjà existants dans une BDD.

    Si tel est le cas, la fonction inscription n'est pas censée se lancer.

    Voici à quoi ressemble le bout de code en question qui me pose problème (il s'agit ici d'une page de traitement en php qui se lance après la validation d'un formulaire) :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    function verification_code() 
    {
        $code = mt_rand(100000,999999);
        $verif_code = mysql_query("SELECT(membre_test) FROM test WHERE membre_test='$code'") or die(mysql_error());
     
        if (mysql_num_rows($verif_code) > 0)
        {
    	    return(false);
        }
     
        else
        {
        	    return(true);
        }
    }
     
    function verification_mail()
    {
        $verif_mail = mysql_query("SELECT(mail_test) FROM test WHERE mail_test='".$mail."'") or die(mysql_error());
     
        if(mysql_num_rows($verif_mail) > 0) 
        {
    	    echo "adresse e-mail déjà existante";
    	    return(false);
        }
     
        else
        {
    	    return(true);
        }
    }
     
    function inscription()
    {
     
        if ((verification_code == true) && (verification_mail == true)) 
        {
                /* Envoi du mail */
     
    	    mail($mail,$titre,$message);
     
    	    /* Inscription dans le base de données */
     
    	    mysql_query ("
    	    INSERT INTO test(id_test, nom_test, prenom_test, sexe_test, mail_test, age_test, tel_test, adresse_test, CP_test, ville_test, membre_test) 
    	    VALUES('', '". $nom. "', '". $prenom ."', '". $sexe. "', '". $mail. "', '". $age. "', '". $telephone. "', '". $adresse. "', '". $CP. "', '". $ville. "', '". $code. "')") 
    	    or die(mysql_error());
     
    	    echo "L'inscription s'est bien déroulée.";
        }
     
        else
        {
    	    echo "petit problème";
        }
    }
    Pour vous expliquer un peu :

    - Dans la fonction verification_code, je commence par générer un code à 6 chiffres. Si jamais ce chiffre existe déjà dans la BDD, la fonction est "fausse".

    - Même principe pour la fonction verification_mail, sauf que le mail est obtenu par le biais d'un formulaire dans une autre page du site.

    - Ensuite si ces deux fonctions sont vraies, la fonction inscription peut se lancer. Cette dernière envoie un mail et inscrit les données du formulaire dans la BDD. Par contre à la place de "Petit problème", je voudrais relancer la fonction verification_code mais je ne sais pas comment faire.


    Si je poste ici, vous vous doutez bien que c'est parce que ma fonction ne marche pas.
    En effet, quand je clique sur le bouton envoyer de mon formulaire, rien ne s'affiche à l'écran.

    Je sais déjà en tout cas que mes requêtes SQL ne sont pas la cause du problème. Je penche sur un problème de syntaxe au niveau des fonctions (c'est la première fois que j'en crée), mais là pour le coup je ne vois pas.

    Si jamais quelqu'un a une idée, je serais très intéressé.

    Merci d'avance !

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Il ya effectivement un problème de syntaxe au niveau de l'appel des fonctions : tu as oublié les parenthèses

    De plus si tu veux que ta fonction verification_mail connaisse la valeur de $mail, il faut lui passer en paramètre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function verification_mail($mail)
    {
    ....
    }
    
    if ((verification_code() == true) && (verification_mail($mail) == true))
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 11
    Par défaut
    Merci pour ta réponse, Celira.

    Malgré cela, mon problème semble persister.
    J'ai l'impression que le contenu de mes fonctions est ignoré, puisque quand j'essaie avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo "Premier test";
     
    function test();
    {
       echo "Second test";
    }
    , "Premier test" s'affiche à l'écran, mais pas "Second test".

    Est-ce que les echo ne sont pas censés s'afficher quand ils sont contenus dans une fonction ?

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Bon, donc en fait, tu as un problème avec le fonctionnement des fonctions à proprement parlé...

    Les fonctions se définissent dans un bloc commençant par function et s'utilisent par le nom de la fonction lui-même.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //ici je définis ma fonction
    function dire_coucou()
    {
      echo 'coucou';
    }
    //là je fais un traitement quelconque si j'en ai besoin.
    echo 'balablablblblba <br/>';
    //là j'appelle ma fonction
    dire_coucou();
    voir la doc : Fonctions
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 11
    Par défaut
    Merci pour ta patience Celira.

    Effectivement avec la bonne syntaxe ça fonctionne déjà beaucoup mieux, je suis proche du but mais je bloque sur un dernier petit soucis.

    Voici mon code modifié :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    function verification_code() 
    {
    	$code = mt_rand(100000,999999);
    	$verif_code = mysql_query("SELECT(membre_test) FROM test WHERE membre_test='$code'") or die(mysql_error());
     
    	if (mysql_num_rows($verif_code) > 0)
    	{
    		return(false);
    	}
     
    	else
    	{
    		return(true);
    	}
    }
     
    verification_code();
     
    function verification_mail($mail)
    {
    	$verif_mail = mysql_query("SELECT(mail_test) FROM test WHERE mail_test='".$mail."'") or die(mysql_error());
    	$result_mail = mysql_fetch_array($verif_mail);
    	if($result_mail != 0) 
    	{
    		echo "adresse e-mail déjà existante";
    		// header('Location: index.php');
    		return(false);
    	}
     
    	else
    	{
    		return(true);
    	}
     
    }
     
    verification_mail($mail);	
     
     
    	if ((verification_code() == true) && (verification_mail($mail) == true))
    	{
    		/* Envoi du mail */
     
    		mail($mail,$titre,$message);
     
    		/* Inscription dans le base de données */
     
    		mysql_query ("
    		INSERT INTO test(id_test, nom_test, prenom_test, sexe_test, mail_test, age_test, tel_test, adresse_test, CP_test, ville_test, membre_test) 
    		VALUES('', '". $nom. "', '". $prenom ."', '". $sexe. "', '". $mail. "', '". $age. "', '". $telephone. "', '". $adresse. "', '". $CP. "', '". $ville. "', '". $code. "')") 
    		or die(mysql_error());
     
    		echo "L'inscription s'est bien déroulée.";
    	}
     
    	else
    	{
    		echo "petit problème";
    		verification_code();
    	}
    A l'affichage, ça me donne ça : "adresse e-mail déjà existanteadresse e-mail déjà existantepetit problème".

    Apparemment, le fait de vérifier si verification_mail est true ou false provoque un deuxième affichage de "adresse e-mail déjà existante".
    Je ne comprends pas trop pourquoi.

    Merci d'avance.

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tout simplement parce que l'echo est dans le corps de la fonction. Donc à chaque fois que tu appelles la fonction, elle affiche l'echo.
    Et comme tu appelles la fonction 2 fois...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 11
    Par défaut
    Merci encore une fois pour ton aide Celira.

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

Discussions similaires

  1. Envoi d'e-mail avec vérification des données
    Par None_ dans le forum Langage
    Réponses: 1
    Dernier message: 17/05/2009, 03h01
  2. Réponses: 18
    Dernier message: 26/06/2008, 11h10
  3. Vérification de donné dans une table access
    Par xdiethank dans le forum VBA Access
    Réponses: 3
    Dernier message: 11/05/2006, 16h29
  4. [Mail] Vérification validiter e-mail dans webmail
    Par freud dans le forum Langage
    Réponses: 5
    Dernier message: 27/09/2005, 17h29
  5. Avis sur la vérification des données d'une fiche
    Par AlexB59 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 28/07/2005, 21h55

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