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] Code d'activation pour vérifier une adresse e-mail


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1
    Points : 2
    Points
    2
    Par défaut [Mail] Code d'activation pour vérifier une adresse e-mail
    Bonjour ,

    Avec PHP comment envoyer un e-mail contenant un code d'activation qui garantira que l'internaute a bel et bien entré sa propre adresse?

    Merci de votre aide

  2. #2
    Membre éclairé
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Points : 776
    Points
    776
    Par défaut
    1. Généré un nombre au hasard
    2. L'enregistrer dans la base de données avec l'adresse email
    3. Envoyer un email contenant un message disant de cliquer sur un lien comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.monadresse.com/activercompte.php?email=monemail@email.com&code=1234567
    4. Activer le compte si l'adresse email correspond au numéro.

    Pour plus de sécurité, tu pourrais ajouter : "Si vous n'avez pas demandé de compte cliquez ici..." et effacer le compte s'il clique sur ce lien.
    Si un essai infructueux est fais sur activercompte.php, supprimer le compte pour éviter le piratage.

    Et voilà.

  3. #3
    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 efficks Voir le message
    Si un essai infructueux est fais sur activercompte.php, supprimer le compte pour éviter le piratage.
    Bof... Combien de fois j'ai reçu des emails dont le lien était foireux et que je devais recopier à la main dans la barre d'adresse et donc susceptible de faire une erreur...



    Sinon dac avec la méthode proposée, on peut même se payer le luxe de supprimer l'adresse email de l'url. Un md5 ou autre hashage de l'adresse comme code est peut-être suffisant...

  4. #4
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Je précise que cette question est récurente et qu'elle a été traitée maintes fois sur ce forum :


  5. #5
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Moi j'ai codé ça !


    Dans ta table sql contenant les membres (dans l'exemple on va l'appeler membre)
    ajoute un champ en INT appelé activation. et un autre champ 'code_activation' en varchar (20)


    Lors de l'inscription, tu metteras le champ à valeur 1, si l'inscription c'est dérouler avec succès ajoute ce 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
    29
    30
    31
    32
     
    function random($car) {
    $string = "";
    $chaine = "abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVXYZ0123456789";
    srand((double)microtime()*1000000);
    for($i=0; $i<$car; $i++) {
    $string .= $chaine[rand()%strlen($chaine)];
    }
    return $string;
    }
     
     
    $mail  = htmlspecialchars(addslashes($_POST['email'])) ;
    $mot_pass  = htmlspecialchars(addslashes($_POST['mot_passe'])) ;
    $nom  = htmlspecialchars(addslashes($_POST['nom'])) ;
    $prenom  = htmlspecialchars(addslashes($_POST['prenom'])) ;
    $age  = htmlspecialchars(addslashes($_POST['age'])) ;
    $code_validation = random(15);
    mysql_query("INSERT INTO `membre` VALUES('', '". $nom ."', '". $prenom ."', '". $age ."', '', '". $mail ."', '". $mot_passe ."', '". $code_validation ."', '1')");
    echo  "Votre inscription c'est dérouler avec succès.<br /> 
    Un code de validation sera envoyer dans votre boite mail à l'adresse <b>$mail</b> .
     Si vous n'avez pas reçu d'email, regarder dans votre boite de spams, sinon contactez l'equipe du site.";
     
     
    $destinataire = $mail ;
    $expediteur   = "admin.angels@gmail.com" ;
    $reponse      = $expediteur;
    $text_mail = "http://www.url.com/validation.php?adresse=$mail&validation=$code_validation";
    mail($destinataire,
         "Validez Votre inscription a PixiBum",
         "Merci de validez votre compte a l'adresse suivant :  $text_mail",
         "From: $expediteur\r\nReply-To: $reponse");

    ensuite, la page validation :

    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
    <?php
    $mail = addslashes(htmlspecialchars($_GET['adresse']));
    $code_validation = addslashes(htmlspecialchars($_GET['validation']));
    include ('inc/bdd.php');
    $result = "
                        SELECT code_validation
                        FROM membre
                        WHERE adresse_mail = '" .$mail. "'
                   ";
    $req = mysql_query($result) or die('Erreur SQL !<br>'.$result.'<br>'.mysql_error());
     
      $data = mysql_fetch_assoc($req);
     
      if($data['code_validation'] = $code_validation) {
      mysql_close();
     
    echo " <font color='red'><b>Votre compte est maintenant validé</b></font><br />" ; 
    mysql_query(" UPDATE membre SET validation ='2' WHERE email='". $mail ."' ");
    mysql_close();
    }

Discussions similaires

  1. [RegEx] Vérifier une adresse mail sur forme et son existance
    Par gpsevasion dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2008, 15h51
  2. Réponses: 2
    Dernier message: 17/10/2007, 16h10
  3. Réponses: 13
    Dernier message: 03/06/2005, 12h26

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