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] creation de compte a partir d'une recu dans boite email [Tutoriel]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Points : 113
    Points
    113
    Par défaut [Mail] creation de compte a partir d'une recu dans boite email
    Bonjour : ,
    Je me pose une question en tant que débutant histoire de savoir si je dois creuser mon idée dans cette direction,

    J’ai un formulaire de création de compte (nom, prénom, email etc....)
    Mon but et de faire en sorte qu'il ni est pas de faut compte de crée donc
    j'ai besoin de vérifié l'existence de l'email de l'internaute qui viens de s’inscrire.

    Ma question

    Est-il possible d'envoyer les valeurs du formulaire dans la boite email de celui qui
    vient de s'inscrire et surtout depuis un lien contenu dans l'email de demander la validation
    et d'une pierre deux coup par le biais de se lien de crée la compte
    (écriture de la ligne du nouveau membre dans la table)

    J’espère avoir été clair.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Ma Réponse

    C'est tout a fait possible oui
    la fonction mail() est ton amie

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Points : 113
    Points
    113
    Par défaut
    Bon Merci donc si c'est possible
    Je continue à essayer de confirmer mon idée de fonctionnement

    Page 1 formulaire.php
    Un formulaire avec leurs champs habituels,

    Page 2 verif.php
    qui affiche les données pour demander
    a l'internaute si les coordonnées affichés sont bien les bonnes .


    Page 3 insert.php
    Fichier qui sert à écrire les données dans la table

    Donc c'est dans le fichier verif.php que doit se trouver la fonction mail après vérification
    l'internaute valide son formulaire et envoie les données a l'email,
    Et le lien dans la mail envoyé doit correspondre a insert.php


    Donc en conclusion je doit avoir dans la page 2 le script de la page 2 mais aussi celui de la page 3 ?????


    Merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par nebil
    Donc en conclusion je doit avoir dans la page 2 le script de la page 2 mais aussi celui de la page 3 ?????
    Tout se tient jusque la

    l'endroit où se trouve un script n'est qu'une question de modularisation... Tout pourrais faire tes 3 parties dans une seule et meme page !!

    Mais comme tu l'as bien défini, 3 parties... donc il est préférable d'en faire 3 pages
    Sinon j'ai mal compris... Que veux-tu dire par celui de la page3 aussi ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Points : 113
    Points
    113
    Par défaut
    désolé je debute mon language n'est pas encore tres precis !!

    celui de la page 3 c'est
    insert.php donc j'aurai plus que deux page et non 3

    page 1 le formulaire.php (contient les champs a renseigner )

    page 2 verif.php contient la presentation des données que l'internaute vient de saisir
    avant envoi , mais aussi le script qui aurai du etre dans ma page 3 celui qui ecris les données dans la table (insert.php).
    de facon a mettre en route par le biais du lien envoyer par mail le script d'ecriture dans la table .

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par nebil
    page 2 verif.php contient la presentation des données que l'internaute vient de saisir
    avant envoi , mais aussi le script qui aurai du etre dans ma page 3 celui qui ecris les données dans la table (insert.php).
    de facon a mettre en route par le biais du lien envoyer par mail le script d'ecriture dans la table .
    Et bien justement, si tu envoies un lien par email, pourquoi revenir sur la page de vérifications sur laquelle tu vas avoir des traitements dont tu n'auras plus besoin lorsque l'utilisateur cliquera sur le lien ?

    Voici a peu pret ce qu'il devrait se passer selon moi

    l'utilisateur envoie des données par un formulaire (formulaire.php). Ces données doivent être insérées dans la base de données, dans laquelle un champ "compteValidé" doit être présent et initialisé a 0 (0 pour non validé et 1 pour validé, par exemple) Tu peux egalement augmenté le niveau de validation en utilisant un champ "clevalidation" qui contient un numéro généré aléatoirement.
    Un email de demande de validation est envoyé à l'utilisateur (verif.php).
    Dans ton lien envoyé dans l'email, tu passes en parametre l'adresse email de l'utilisateur par exemple (ou une autre clé qui l'identifie dans la base de données) et la clé de validation.
    L'utilisateur clique sur ce lien qui l'enmene sur une page de validation (insert.php)
    Si tu retrouves cet email dans la base de données, tu peux procédé à la validation en vérifiant que la clé de validation correspond à celle présente dans la base de données.

    Si l'email est trouvé, et la clé de validation valide, alors tu modifies le champ "comptevalide" et le mets a 1.

    Est-ce que cela conviendrait ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Points : 113
    Points
    113
    Par défaut
    Ho oui sa me conviendrais mais effectivement moi je voyais sa d'une autre manière plus simple a mes petit yeux,

    formulaire.php
    action vers
    verif.php
    (La verif c'est les données saisie par l'internaute a l’ecran pour confirmation ou modifier
    des éventuelles erreurs de saisies)
    au bouton validez on envoi toutes les données dans des input hidden
    a l'adresse email

    A se stade rien de crée dans la table
    email reçu
    Il apparais un lien (validez votre inscription) et se même lien a pour fonction de mettre
    en route le script pour crée la ligne dans la table membre.

    Maintenant moi je cherche a faire cela pour mon site perso si tu accepte de m'aider je veux bien choisir
    ta façon de faire, mais elle me parais plus difficile techniquement a réaliser pour moi.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par nebil
    Ho oui sa me conviendrais mais effectivement moi je voyais sa d'une autre manière plus simple a mes petit yeux,

    formulaire.php
    action vers
    verif.php
    (La verif c'est les données saisie par l'internaute a l’ecran pour confirmation ou modifier
    des éventuelles erreurs de saisies)
    au bouton validez on envoi toutes les données dans des input hidden
    a l'adresse email

    A se stade rien de crée dans la table
    email reçu
    Il apparais un lien (validez votre inscription) et se même lien a pour fonction de mettre
    en route le script pour crée la ligne dans la table membre.

    Maintenant moi je cherche a faire cela pour mon site perso si tu accepte de m'aider je veux bien choisir
    ta façon de faire, mais elle me parais plus difficile techniquement a réaliser pour moi.
    le problème de ta méthode, c'est que si tu ne stock pas directement les dans la base, il te faudra faire un coockie ou quelque chose signalant que l'utilisateur a envoyé des données sur ton site.
    Les coockies, si le naviguateur de l'utilisateur ne les accepte pas, ca te posera probleme...
    Une autre solution serait de renvoyer TOUT les champs que l'utilisateur a entré, dans le lien de l'email... Je pense que ca fait un peu surchargé comme méthode
    Les session ? si elle expire alors que l'utilisateur n'a pas encore validé le lien, les données disparaitront...

    Enfin, je ne suis pas un grand expert non plus
    Ma méthode n'est peut-etre pas la meilleure, il faudra voir si d'autres membres du forum pourraient donner leur avis

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par nebil
    Maintenant moi je cherche a faire cela pour mon site perso si tu accepte de m'aider je veux bien choisir
    ta façon de faire, mais elle me parais plus difficile techniquement a réaliser pour moi.
    le problème est que je vais bientôt pu pouvoir me connecter souvent, donc je ne pourrai pas t'aider, désolé
    Mais tout ce dont je t'ai parlé est facilement trouvable sur le net
    et sur le forum, bcp sauront t'aider sur ma méthode ^^

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Points : 113
    Points
    113
    Par défaut
    Bon je réfléchis avec toi Sion_Sempai ,

    Non non je ne parle pas de meilleur méthode c'est pas le sujet, je suis volontiers preneur
    c'est juste histoire d'approfondir mon idée de fonctionnement voir si elle est viable, encore
    une fois si tu accepte de m'aider je part sur ta technique , la seul chose qui m'importe c'est de finir mon site .

    "le problème de ta méthode, c'est que si tu ne stock pas directement les dans la base, il te faudra faire un cookie
    ou quelque chose signalant que l'utilisateur a envoyé des données sur ton site."

    Le cookie je ne vois pas en quoi il peut être utile
    Pour me signaler que l'utilisateur a envoyé des donnes sur mon site je peux faire une main en copie systématique.


    Une autre solution serait de renvoyer TOUS les champs que l'utilisateur a entrés, dans le lien de l'email... Je pense que ça
    fait un peu surchargé comme méthode

    oui effectivement c'est a sa que je pensé comme fonctionnement mais la aussi je ne vois pas de surcharge puisqu'il
    ni a pas d'upload de fichier mais juste que du code au pire le mail va faire 200ko.

    "Les sessions ? Si elle expire alors que l'utilisateur n'a pas encore validé le lien, les données disparaîtront... "
    Ta raison j'avais pas pensé a sa
    Mais on peut, peut être faire en sorte que tant que le lien n'est pas validé la session n'est pas fermer ???

    Sion_Sempai , merci pour ton soutien je serai de retour que se soir
    A+

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par nebil

    Une autre solution serait de renvoyer TOUS les champs que l'utilisateur a entrés, dans le lien de l'email... Je pense que ça
    fait un peu surchargé comme méthode

    oui effectivement c'est a sa que je pensé comme fonctionnement mais la aussi je ne vois pas de surcharge puisqu'il
    ni a pas d'upload de fichier mais juste que du code au pire le mail va faire 200ko.
    Bha, c'est faisable, mais personnellement, sans vouloir te vexer, je ne trouve pas ca très "propre"

    "Les sessions ? Si elle expire alors que l'utilisateur n'a pas encore validé le lien, les données disparaîtront... "
    Ta raison j'avais pas pensé a sa
    Mais on peut, peut être faire en sorte que tant que le lien n'est pas validé la session n'est pas fermer ???
    Ca je ne sais pas, mais meme si c'est possible, je ne pense quand meme pas que ca soit une solution viable

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Points : 113
    Points
    113
    Par défaut
    Salut Sion_Sempai ,
    Pas de problème je suis pas vexer pour moi un forum c pas un espace de frime ou de concours de savoir,
    J’ai besoin d'aide pour aboutir à mes fins,
    Et j'écoute avec attention se que l'on me dit,

    Mais comme déjà dit, aujourd’hui techniquement je ne suis pas capable d’écrire le script avec
    Ta technique c'est complique pour moi, alors je sais pas combien de temps sa peut prendre mais
    Si tu accepte de m'aider je veux bien essayer.

    Alors je requépépéte depuis le bédu pour voir si j'ai bien compris

    j'ai une table avec ses champs classique + un champ " compteValidé
    initialisé a 0 sa c'est quoi ? et sa marche comment ?


    1/donc j'envoi le formulaire il écris dans la table les données et en même temps il envoi un mail a l'internaute.

    2/ le lien dans l'email pointe vers verif.php
    Qui a pour fonction de vérifier, mais quoi ? La je suis perdu
    (Parceque pour moi si tu veux verif.php permettait a l’internaute de vérifié
    La saisie de ses données avant inscription dans la table c'est tout.

    Après pour le reste je t'avoue que je suis perdu comment faire pour passer de 0 a 1 dans le champs " compteValidé " ?

    comment effacer la ligne crée dans la table automatiquement si le lien n'est jamais validé ?

    Pas à pas SVP Sion_Sempai je démarre

  13. #13
    Membre averti Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Points : 448
    Points
    448
    Par défaut
    Salut, j'ai un tout petit peu de temps alors je vais essayer de t'aider aussi..
    Pour poursuivre dans l'idée des autres, dans le mail tu mets un lien genre http://..../verif.php?id=4654 , avec 4654 un tru c que j'ai pris au hasard qui correspondrait a l'id de ton visiteur ('que tu as donc deja enregistré dans ta base mais avec comptevalide=0.

    Dans verif.php tu regardes dans ta base si l'id existe, et si son comptevalide est égal à 0 (et tu pourrais aussi éventuellement pour augmenter la sécurité de reconfirmer certains champs). Si c'est bon, tu mets sont comptevalide à 1 avec une simple requete SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="UPDATE table SET comptevalide=1 WHERE id =".$_GET['id'];
    Et voila, ton utilisateur est enregistré et son compte activé.

    Ce qui veut dire qu'il n'a pas accès aux fonctions des autres utilisateurs enregistrés si son compte n'est pas validé encore.. mais ça je suppose que tu t'en doutais !

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par nebil
    Salut Sion_Sempai ,
    Pas de problème je suis pas vexer pour moi un forum c pas un espace de frime ou de concours de savoir,
    J’ai besoin d'aide pour aboutir à mes fins,
    Et j'écoute avec attention se que l'on me dit,

    Mais comme déjà dit, aujourd’hui techniquement je ne suis pas capable d’écrire le script avec
    Ta technique c'est complique pour moi, alors je sais pas combien de temps sa peut prendre mais
    Si tu accepte de m'aider je veux bien essayer.

    Alors je requépépéte depuis le bédu pour voir si j'ai bien compris

    j'ai une table avec ses champs classique + un champ " compteValidé
    initialisé a 0 sa c'est quoi ? et sa marche comment ?


    1/donc j'envoi le formulaire il écris dans la table les données et en même temps il envoi un mail a l'internaute.
    oui, c'est juste, ton formulaire a une action vers verif.php qui envoie l'email et enregistre les données dans la base de données.
    Supposons que ta table ressemble a ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    user_id INT AUTO_INCREMENT PRIMARY KEY
    user_nom VARCHAR(25)
    user_prenom VARCHAR(25)
    user_email VARCHAR(150) NOT NULL
    user_login VARCHAR(20) NOT NULL
    user_password VARCHAR(32) NOT NULL
    user_compteValide TINYINT NOT NULL
    user_cleActivation VARCHAR(6) NOT NULL
    user_dateCreated DATETIME NOT NULL
    le lien envoyé par mail pourra ressemblé à quelque chose comme :
    http://domaine/site/validateAccount.php?id=3&key=0fgc5b

    dans ce lien, id correspond au user_id du compte et key a user_cleActivation.

    2/ le lien dans l'email pointe vers verif.php
    Qui a pour fonction de vérifier, mais quoi ? La je suis perdu
    (Parceque pour moi si tu veux verif.php permettait a l’internaute de vérifié
    La saisie de ses données avant inscription dans la table c'est tout.
    En fait, je pensais que tu faisais la vérifications des entrées avant d'envoyer l'email... Mais le faire après est possible aussi ^^ quoi qu'il en soit, il te faudra inserer les données du compte en même temps que tu envoies l'email, en faisant attention de désactiver le compte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO user (user_nom, user_prenom, user_email, user_login, user_pass, user_compteValide, user_cleActivation, user_dateCreated) VALUES ('".$nom."', '".$prenom."', '.$email."', '".$login."', md5('".$pass."'), 0, '".substr(md5(uniqid(rand(), true)), 0, 6)."', CURDATE())
    ici, substr(md5(uniqid(rand(), true)), 0, 6) permet de créer aleatoirement une "clé" de 6 caractères. On aura pris soin de crypter le mot de passe, mais ca après, c'est a ta convenance

    Après pour le reste je t'avoue que je suis perdu comment faire pour passer de 0 a 1 dans le champs " compteValidé " ?
    voir la réponse de gofono

    comment effacer la ligne crée dans la table automatiquement si le lien n'est jamais validé ?
    C'est le seul point qui peut-etre problematique dans la méthode que je te propose. a la limite, tu rajoutes un champs "dateCreer" dans la base (je corrige la haut... et dans l'insertion des données. ) et tu créé un petit script "de maintenance" que tu executeras toi meme (par une interface d'administration par exemple) dans lequel tu parcours la table en vérifiant que la date de creation de compte. Si elle date de plus de 2 semaines, tu supprimes l'enregistrement par exemple

    Pas à pas SVP Sion_Sempai je démarre
    Ca a été ?
    j'ai pas été trop vague ?

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    J'ai codé quelques pages pour te donner des exemples de code...
    Je sais pas trop si je peux les balancer ici... Rhofl... Aller

    formulaire.php
    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
    <?php
    session_start();
    ?>
    <html>
    <head>
    <title>Formulaire</title>
    </head>
    <body>
    <?php
    // **** Vérifications génériques (type des valeurs ou autre... ici on vérifie juste que les champs sont remplis) **** //
    if (isset($_POST['verifDatas'])) {
     
    	$errConfirmPass = false;
    	$errMsg = '';	// initialisation du message d'erreur.
     
    	// **** Si UN champ n'est pas spécifié **** //
    	if (!isset($_POST['id']) || !isset($_POST['nom']) || !isset($_POST['prenom']) || !isset($_POST['email']) || !isset($_POST['login']) || !isset($_POST['pass']) ) {
    		$errMsg = 'Merci de spécifier tout les champs.';	// mise à jour du message d'erreur.
    	}
    	/********************************************/
     
    	// **** Si le pass n'est pas confirmé correctement **** //
    	if (!isset($_POST['confirmpass']) || $_POST['confirmpass'] != $_POST['pass']) {
    		$errConfirmPass = true;
    		$errMsg = 'Le mot de pass et sa confirmation sont différents.';	// mise à jour du message d'erreur.
    	}
    	/********************************************************/
     
    	$_SESSION['proceed'] = 1;						//
    	$_SESSION['user_nom'] = $_POST['nom'];			//
    	$_SESSION['user_prenom'] = $_POST['prenom'];	// On rempli les variables sessions avec
    	$_SESSION['user_email'] = $_POST['email'];		// les valeurs des champs.
    	$_SESSION['user_login'] = $_POST['login'];		//
    	$_SESSION['user_pass'] = $_POST['pass'];		//
     
    	if ( !$errConfirmPass && $errMsg == ''){		// Si pas de message d'erreur,
    		header("Location: verif.php");				// On redirige vers la page de vérification des entrées.
    		exit();
    	} else {
    		echo $errMsg;								// Si message d'erreur alors on l'affiche.
    	}
    }
    /**************************************************************************************************************************/
     
     
    // **** Affichage du formulaire avec les données entrées si
    ?>
    <form action="verif.php" method="post">
    Nom: <input type="text" name="nom" value="<?php echo (isset($_SESSION['user_nom'])) ? $_SESSION['user_nom'] : ""; ?>" /><br />
    Prénom: <input type="text" name="prenom" value="<?php echo (isset($_SESSION['user_prenom'])) ? $_SESSION['user_prenom'] : ""; ?>" /><br />
    Email: <input type="text" name="email" value="<?php echo (isset($_SESSION['user_email'])) ? $_SESSION['user_email'] : ""; ?>" /><br />
    Login: <input type="text" name="login" value="<?php echo (isset($_SESSION['user_login'])) ? $_SESSION['user_login'] : ""; ?>" /><br />
    Pass: <input type="password" name="pass" value="" /><br />
    Confirm Pass: <input type="password" name="confirmpass" value="" /><br />
    <input type="submit" name="newAccount" value="" />
    </form>
    </body>
    </html>
    verif.php
    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
    <?php
    session_start();
    ?>
    <html>
    <head>
    <title>Verifications</title>
    </head>
    <body>
    <?php
    // **** Si on demande modification des données **** //
    if (isset($_POST['modifyInfos'])) {
    	header('Location: formulaire.php');	// Redirection vers le formulaire d'inscription pour modification des données.
    	exit();
    }
    /****************************************************/
     
    // **** Si les données sont confirmées **** //
    if (isset($_POST['newAccount'])){
    	$_SESSION['proceed'] = 2;
    	header('Location: createNewAccount.php'); // Redirection vers le script de creation de compte.
    	exit();
    }
    /********************************************/
     
    // **** Si les données ont bien été enregistrées dans des variables sessions **** //
    if (isset($_SESSION['proceed']) && $_SESSION['proceed'] == 1)
    {
    ?>
    Nom: <?php echo (isset($_SESSION['user_nom'])) ? $_SESSION['user_nom'] : ""; ?><br />
    Prénom: <?php echo (isset($_SESSION['user_prenom'])) ? $_SESSION['user_prenom'] : ""; ?><br />
    Email: <?php echo (isset($_SESSION['user_email'])) ? $_SESSION['user_email'] : ""; ?><br />
    Login: <?php echo (isset($_SESSION['user_login'])) ? $_SESSION['user_login'] : ""; ?><br />
    Pass: <i>Caché par sécurité</i><br />
    <form action="<?php echo $_ENV['PHP_SELF']; ?>" method="post">
    <input type="submit" name="modifyInfos" value="Modifier les infos" />&nbsp;<input type="submit" name="newAccount" value="Confirmer les infos" />
    </form>
    <?php
    }
    // **** Si la session n'est pas correctement initialisée **** //
    else
    {
    	header('Location: formulaire.php');	// Redirection vers le formulaire d'inscription.
    	exit();
    }
    /***************************************************************/
    ?>
    </body>
    </html>
    createNewAccount.php
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    <?php
    session_start();
     
    require_once('bdd.php');	// Insertion des données de connection au serveur MYSQL
    ?>
    <html>
    <head>
    <title>Validation de compte</title>
    </head>
    <body>
    <?php
    // Si la session n'est pas à jour
    if ( !(isset($_SESSION['proceed']) && $_SESSION['proceed'] == 2) ) {
    	header('Location: formulaire.php');
    	exit();
    }
     
    // Génération de la clé d'activation
    $cleActivation = substr(md5(uniqid(rand(), true)), 0, 6);
     
    // Liste des valeurs des qui seront insérées dans la table
    $champs = "
    	'".mysql_real_escape_string($_SESSION['user_nom'])."', 
    	'".mysql_real_escape_string($_SESSION['user_prenom'])."', 
    	'".mysql_real_escape_string($_SESSION['user_email'])."', 
    	'".mysql_real_escape_string($_SESSION['user_login'])."', 
    	md5('".$_SESSION['user_pass']."'), 
    	'".$cleActivation."', 
    	0,
    	CURDATE()
    	";
     
    // Requête SQL avec concatenation de la liste des valeurs.
    $sql = "
    	INSERT INTO
    		table_users
    		(
    		user_nom, 
    		user_prenom, 
    		user_email, 
    		user_login, 
    		user_pass, 
    		user_cleActivation, 
    		user_compteValide, 
    		user_dateCreated, 
    		)
    	VALUES
    		(
    		".$champs."
    		)
    	";
     
    // Execution de la requête
    mysql_query($sql) or die(mysql_error());
     
    // **** Selection du dernier id utilisateur enregistré **** //
    $sql = "
    	SELECT
    		LAST_INSERT_ID() AS user_id
    	";
    $qry = mysql_query($sql) or die(mysql_error());
    /************************************************************/
     
    if (mysql_num_rows($qry) > 0) {			// Sert à éviter une éventuelle erreur du mysql_fetch_array() dans le cas où il ne retournerait rien
    	$datas = mysql_fetch_array($qry);
    	$user_id = $datas['user_id'];
     
    	$mailHeader = 'From: MONSITE <mon@email.com>'."\r\n";		// Header de l'email
    	$mailHeader .= 'Reply-to: MONSITE <mon@email.com>'."\r\n";
     
    	$mailTo = $_SESSION['user_email'];							// Envoyer le mail à
    	$mailSubject = 'Votre inscription sur le site MONSITE';		// Objet de l'email
     
    	$mailBody = 'Content-Type: text/html; charset=iso-8859-1'."\r\n";	// Contenu de l'email, en spécifiant qu'il est au format HTML
    	$mailBody .= 'Bonjour,
    	
    	Vous venez de vous inscrire sur mon site. Afin de terminer l\'inscription,
    	Vous devez valider votre compte. Pour cela, cliquez sur le lien ci dessou :
    	<a href="http://domaine/site/validateAccount.php?id='.$user_id.'&key='.$cleActivation.'">http://domaine/site/validateAccount.php?id='.$user_id.'&key='.$cleActivation.'</a>
    	
    	Merci de vous être inscrit et à bientôt,
    	
    	Le Webmaster.';
     
    	if (!@mail($mailTo, $mailSubject, $mailBody, $mailHeader)) {	// Envoi de l'email
    		die("L'email de confirmation n'a pas été envoyé.");			// On s'arrete si l'envoi n'est pas fait !
    	}
     
    	session_destroy();												// Destruction de la session quand tout se termine bien.
    } else {
    	die("Erreur lors de la récupération de l'identifiant du compte.");	// Si l'identifiant n'est pas trouvé, message d'erreur...
    }
     
    mysql_close();	// Fermeture de la connection au server MySQL.
    ?>
    </body>
    </html>
    validateAccount.php
    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
    <html>
    <head>
    <title>Validation de compte</title>
    </head>
    <body>
    <?php
     
    require_once('bdd.php');	// Insertion des données de connection au serveur MYSQL
     
    // **** Verifications de la présence des paramètres **** //
    if (!isset($_GET['id']) || !isset($_GET['key'])) {
    	die("Paramètres incorrectes.");
    }
    /*********************************************************/
     
    // Recherche de la clé d'activation de l'utilisateur spécifié en paramètre.
    $sql = "
    	SELECT 
    		user_cleActivation
    	FROM 
    		table_users 
    	WHERE 
    		user_id = '".$_GET['id']."'
    ";
     
    $qry = mysql_query($sql) or die(mysql_error());
     
    if (mysql_num_rows($qry) > 0) {							// Si l'utilisateur est trouvé
    	$datas = mysql_fetch_array($qry);					// On récupère la clé d'activation de la base de données.
    	$bddCleActivation = $datas['user_cleActivation'];
     
    	if ($bddCleActivation != $_GET['key']) {			// Si la clé n'est pas identique à celle passée en parametre,
    		die("Clé d'activation incorrecte.");			// Erreur !!!
    	}
     
    	// Sinon, activation du compte utilisateur.
    	$sql = "
    		UPDATE
    			table_users
    		SET
    			compteValide = 1
    		WHERE
    			user_id = '".$_GET['id']."'
    	";
    	mysql_query($sql) or die(mysql_error());
    	?>
    <center>Votre compte a bien été validé. Vous pouvez vous logguer sur le site dès maintenant en vous rendant sur la page de connection.</center>
    	<?php	
    } else {												// Si le compte n'est pas trouvé,
    	die("L'utilisateur spécifié n'a pas été trouvé.");	// Erreur !!!
    }
     
    mysql_close();	// Fermeture de la connection au serveur MySQL.
    ?>
    </body>
    </html>
    bdd.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    $bddHost = 'localhost';		// Serveur
    $bddUser = 'root';			// Login
    $bddPass = '';				// Mot de passe
    $bddBase = 'membres';		// Base de donnée
     
    mysql_connect($bddHost, $bddUser, $bddPass) or die(mysql_error());	// Connection au serveur
    mysql_select_db($bddBase) or die(mysql_error());					// Selection de la base de données.
     
    ?>

    /!\ ATTENTION ! Ce code n'a été fait qu'à titre d'exemple ! Il n'a donc pas été testé et peut être optimisé

    [EDIT]
    Fichiers dispo en zip à l'adresse :
    http://oufben.free.fr/compte_utilisateur.zip

    [EDIT]
    Mise à jour du code avec rajout de la page bdd.php
    Mise à jour du zip

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Points : 113
    Points
    113
    Par défaut
    Pour info de suivi
    Se message a été poster avant ta presentation de code
    Bon je sais pas par quoi commencé
    allez !!!

    sa fonctionne comme sa !!
    1/ formulaire.php
    a/ecris dans la table la ligne du membre ,
    b/contient .substr(md5( etc.... qui crée une clé aléatoire inséré dans le champs " user_cleActivation "
    c/envoie le mail avec le lien qui mais en route

    1/verif.php
    a/ il vérifie si cette fameuse clé elle existe
    b/ si elle existe on passe la valeur du champ "compteValide" de 0 a 1


    Questions ?

    1/quand l'email est envoyer, le lien qui doit être validez ne peut pas contenir l'id de celui qui viens
    de s'inscrire puisque c'est le SQL qui le crée automatiquement et a se stade on a pas interroger la table pour récupéré l'id ?
    Ou alors on la récupéré quand ?


    2/quel est la donnée qu'on doit se balader depuis formulaire.php
    qui va nous servir a vérifié l'existence du compte et donc de pouvoir le validez ?

    2/ la valeur de la clé qui est crée par '".substr(md5 etc...et crée au submit du formulaire.php ?
    on se la balade de formulaire.php a l'email et a verif.php ?
    et si oui la session comme tu la si bien fait remarquer ne risque pas d'etre ferme et donc d'avoir perdu les valeurs

    Sa ressemble un peut comme a un script pour un membre deja crée pour verfié si il est bien membre lui permettre de crée un nouveau mot de pass
    A+

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 487
    Points : 113
    Points
    113
    Par défaut
    Merci je test et reviens vers toi .

  18. #18
    Membre averti Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Points : 448
    Points
    448
    Par défaut
    pour le 1/
    si tu peux avoir l'id tres simplement avec un SELECT MAX(id) FROM table en supposant que ta clé soit en auto-increment (ce que je te conseille fortement si ce n'est pas le cas) juste apres ta requete d'insertion.

    pour les deux 2/ (tu m'expliqueras lol) , j'ai pas tout cmopris, mais je ne vois pas l'interet de se "balader" comme tu dis avec autres chose que l'id qui est suffisant pour savoir quel compte activer.

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par gofono_bass
    pour le 1/
    si tu peux avoir l'id tres simplement avec un SELECT MAX(id) FROM table en supposant que ta clé soit en auto-increment (ce que je te conseille fortement si ce n'est pas le cas) juste apres ta requete d'insertion.
    dans certains cas c'est préférable comme ca, mais si ca doit se faire juste après un insert... Je préfère utiliser LAST_INSERT_ID()

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par nebil
    Merci je test et reviens vers toi .
    Le code et les quelques commentaires que j'y ai mit ( si tu comprends bien tout ) devraient répondre à tes questions

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/08/2008, 14h36
  2. se connecter à un compte a partir d'une autre application
    Par dev.exe dans le forum Services Web
    Réponses: 3
    Dernier message: 08/08/2008, 11h23
  3. Réponses: 4
    Dernier message: 23/01/2008, 12h16
  4. [PDE] Creation de vues a partir d'une autre vue
    Par indoloic dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 13/03/2006, 14h34
  5. Réponses: 18
    Dernier message: 08/08/2005, 20h52

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