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

PHP & Base de données Discussion :

Création de lien pour activer un compte [Fait]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 15
    Par défaut Création de lien pour activer un compte
    Salut !

    Je viens de créer un formulaire d'inscription pour un site, avec une belle interface et sa base de données, mais j'aimerais vérifier si le mail donné par l'utilisateur existe vraiment, j'ai donc pensé aux liens qu'on reçoit quand on s'inscrit dans un forum (par exemple).

    Le problème c'est que je ne vois pas vraiment comment générer un tel lien. Je ne sais pas non plus quelle fonction utiliser pour envoyer automatiquement un mail à une personne.

    Merci d'avance pour votre aide

  2. #2
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Par défaut
    salut,

    Voici un script que j ai utilisé pour faire ca:

    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
    <?php
    if(isset($_POST['identifiant'])){
    	$identifiant=$_POST['identifiant'];
    	$rqt="Select identifiant from utilisateur where identifiant='".$identifiant."';";
    	$resultat=pg_fetch_array(requete($rqt));
     
    	if($identifiant!=$resultat[0]){
    	    $code=md5(round(0,32).time());
    		$rqt="Insert into utilisateur(identifiant,mot_de_passe,nom,prenom,adresse,id_type,numero_a)
    				values('".$_POST['identifiant']."',
    				'".$_POST['mot_de_passe']."',
    				'".$_POST['nom']."',
    				'".$_POST['prenom']."',
    				'".$_POST['adresse']."',
    				'".(2)."',
    				'".$code."');";
    		$res = requete($rqt);
     
    	 $headers ='From: "Administration"<emetteur@ifide.com>'."\n";
         $headers .='Reply-To: destinataire@orange.fr'."\n";
         $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
         $headers .='Content-Transfer-Encoding: 8bit';
     
         $message ="<html><head><title>Activation de votre compte</title></head>
    	 <body>
    	 
    	 <b> Bienvenue , et merci de vous êtes inscrit.
    	 Pour valider votre inscription , cliquez sur le lien ci-dessous </br>
    	 
    	 <a href='http://localhost/forum/validation.php?user=".$_POST['identifiant']."&code=".$code."'>Activation</a>
    	 
    	 </body></html>";
     
         if(mail($_POST['adresse'], 'Activation de votre compte', $message, $headers))
         {
              echo 'Le message a été envoyé';
         }
         else
         {
              echo 'Le message n\'a pu être envoyé';
         } 
     
    	}else{
    	echo ("<center><FOnt color = red>Ce pseudonyme est déja utilisé</font></center>");
    	}
    }
    ?>

  3. #3
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 15
    Par défaut
    Ha d'accord, je vois un peu mieux le truc...cependant, je ne comprend pas très bien comment fonctionnent les fonctions : "md5(round(0,32).time())" et "mail($_POST['adresse'], 'Activation de votre compte', $message, $headers)".

    En tout cas merci pour ton aide

  4. #4
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Par défaut
    j ai fait ce script il y a quelques mois mais la variable $code comportait un numéro generé aléatoirement et crypté en Md5 j'envoyait ce code dans le lien et ensuite lorsque l'utilisateur cliquait sur le lien dans le mail, je pouvait le comparait dans ma base de données et ainsi identifier l'utilisateur.

    $message vaut le lien, et $ header l'entete.

    Il est possible que je m'embrouille un peu car j'ai fait ca il ya longtemps.

    en esperant avoir aider un peu

  5. #5
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 15
    Par défaut
    Ok, merci...je pense pouvoir adapté ça à mon code, mais si quelqu'un a des correction a faire ou a une autre proposition n'hésitez pas. En tout cas merci beaucoup gerald57

  6. #6
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 15
    Par défaut
    Bon, finalement, la fonction que tu m'as passé ne fonctionne pas très bien. Mais ça m'a permis de trouver d'autres solutions. En fait, j'utilise le protocole smtp pour l'envoi de mail, mais apparement on me demande une authentification (que je ne sais pas configurer).

    J'ai ensuite trouver un tutoriel m'expliquant d'envoyer un mail avec phpmailer (voir : http://stephaneey.developpez.com/tut...php/phpmailer/). Ca a mieux marcher, et ce script envoie un message d'erreur explicite mais qui n'indique pas comment résoudre le problème. Voici ce qu'il m'affiche :

    SMTP Error: The following recipients failed: machin.truc@gmail.com

    machin.truc@gmail.com etant normalement une adresse valide.

    Voici le code source :

    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
    <?php
    include"phpmailer/class.phpmailer.php";
    include"phpmailer/class.smtp.php";
     
    $envoi_mail = new PHPmailer();
    	$envoi_mail->IsSMTP();
    	$envoi_mail->IsHTML(true);
    	$envoi_mail->Host='smtp.adressesmtp.org';
    	$envoi_mail->From='truc@truc.org';
    	$envoi_mail->AddAddress('machin.truc@gmail.com');
    	$envoi_mail->AddReplyTo('truc@truc.org');	
    	$envoi_mail->Subject='Exemple trouvé sur DVP';
    	$envoi_mail->Body='<html><body><head><style>.entete{background-color:#0000FF;color:#FFFFFF;border:solid 3px;font-size:25px}';
    	$envoi_mail->Body.='.ligne{color:#0000FF;border:solid 1px;text-align:center;font-size:23px}</style></head>';
    	$envoi_mail->Body.='<center><table><tr><td class="entete">Voici un exemple d\'e-mail au format HTML</td></tr>';
    	$envoi_mail->Body.='<tr><td class="ligne">Ceci est un tableau HTML</td></tr></table></center></body></html>';
     
    	if(!$envoi_mail->Send()){ //Teste si le return code est ok.
    	  echo $envoi_mail->ErrorInfo; //Affiche le message d'erreur (ATTENTION:voir section 7)
    	}
    	else{	  
    	  echo 'Mail envoyé avec succès';
    	}
    	$envoi_mail->SmtpClose();
    	unset($envoi_mail);
    ?>
    Par contre, j'ai inversé les adresses en mettant truc@truc.org en destinataire et machin.truc@gmail.com en expéditeur, et la ca a marché. Je me demande si gmail refuse les mail envoyer par php...mais hotmail m'a fait la meme chose. Est ce que vous pouvez m'aider svp.

    Merci d'avance.

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/12/2010, 20h16
  2. Valider un lien d'activation de compte
    Par franchouze dans le forum Struts 1
    Réponses: 2
    Dernier message: 05/10/2009, 09h32
  3. Réponses: 14
    Dernier message: 09/04/2009, 23h34
  4. [XML] Probleme pour création de liens
    Par mackean dans le forum Dynamique
    Réponses: 0
    Dernier message: 07/03/2008, 14h35

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