Rechercher : dans
Par :

Activation du compte

Dernière réponse le 4 oct 2009 à 11:30:32 max1395, le 24 sep 2009 à 13:38:59 
 Signaler ce message aux modérateurs

Bonjour,
je suis webmaster d'un site et je voudrais faire un systeme d'activation du compte : je voudrais que quand une personne s'inscrit sa lui envoie un mail avec un lien sur lequel la personne doit cliquer pour valider son inscription.
je ne sais pas du tout comment faire , je n'est pas de code de depart si vous pouviez m'aider ?

merci beaucoup

Configuration: Windows Vista
Firefox 3.5.3

Meilleures réponses pour « activation du compte » dans :
Accès réseau et compte Invité (XP Pro) Voir Je veux accéder à un PC via le réseau, mais à l'invite d'identification, on me demande le mot de passe du compte invité, et je ne peux pas m'identifier avec un autre compte d'utilisateur. Il va falloir effectuer une petite modification, pour...
[MSN] Compte MSN Messenger piraté / Piratage de compte Hotmail VoirPiratage de compte Vous vous êtes fait pirater votre compte MSN Messenger ou bien votre compte hotmail a été hacké et vous souhaitez absolument le récupérer ! Nettoyage de l'ordinateur Compte inaccessible - Contact du support MSN Attention...
[Outlook Express] Relever/consulter boite hotmail ou compte MSN VoirIl est possible de relever ses messages sur un compte Hotmail ou MSN à l'aide du client de messagerie Outlook Express 5 ou supérieur. Attention: depuis le premier trimestre 2005 cette option est payante ! Configuration d'Outlook Express * Dans le...
Clé d'activation du logiciel avast! Edition Familiale VoirLe logiciel antivirus avast! Edition Familiale est gratuit. Il nécessite toutefois une clé d'activation pour fonctionner. Cette clé est gratuite et valable 1 an. Sommaire : Pour la demander Pour l'installer Le renouvellement...

1

natsu46, le 24 sep 2009 à 13:43:41

Tu le fais comment ton site?

Répondre à natsu46

2

Nabla's, le 24 sep 2009 à 13:52:10

Salut.

je ne sais pas a quel niveau tu en es, si tu as déja créé les comptes ou pas.

dans ta base de données, dans la table "utilisateurs", tu vas avoir les champs login, mot_de_passe (à crypter en md5 ou sha1, et comparer les mots de passes cryptés pour plus de sécurité), activation et email

lors de l'inscription, tu mettras "activation" à 0
si quelqu'un veut se loguer avec un compte dont l'activation est à 1, tu l'autorise, sinon, tu le refuses.

lors de l'inscription, après avoir inséré les données dans la base de données, tu envoies un mail (fonction mail, vas voir les exemples en ligne)

ce mail doit contenir un lien qui pointe sur une page "activation". Ce lien contiendras dans les paramètres le login de la personne (et meme un champs de sécurité si tu veux

exemple: http://www.monsite.com/activation?login=blabla&securite=6844fs4f
poru calculer la valeur de securite, tu peux par exemple faire
$securite = md5($login."ma securité")

dans le script activation, tu vas verifier que la clef de sécuité est cororecte
if($_GET['securite']==md5(md5($_GET['login]."ma securité")))
{
ta requete sql pour updater l'etat de activation dans la table utilisateurs pour les entrées dont le login correspond à celui qui est communiqué
}

et voila....

si tu ne comprends pas une partie, je veux bien détailler un peu plus, mais il faut que tu sois précis
je n'ai pas de code tout prêt à te donner

n'hésites pas à donner du code que tu as déja fait, ou de nous dire à quel état d'avancement tu en est dans le site

Répondre à Nabla's

3

max1395, le 25 sep 2009 à 17:17:22

Merci j'ai bien lis et relis est j'ai donc un petit code . voila j'ai mis dans ma table un champ activation avec la valeur 0 par default . Ensuite j'ai mis dans ma page de traitement de l'inscirption ce code :

mt_srand((float) microtime()*1000000);

$securite = mt_rand(0, 100) ;
$email = $_POST["email"] ;

     $headers ='From: "mon site"<$email>'."\n"; 
     $headers .='Reply-To: '."\n"; 
     $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n"; 
     $headers .='Content-Transfer-Encoding: 8bit'; 

     $message ="<html><head><title>Un titre ici</title></head><body>

lien d'activation : http://monsite.com/activation.php?login=$pseudo&securite=$securite<br />
</body></html>";


     if(mail('$email', 'Activation compte', $message, $headers)) 
     { 
          echo 'Le message a été envoyé avec succès .Nous allons vous répondre le plus rapidement possible .<br>
		  Cliquer <a href="index.php">ici </a>pour revenir a index. Merci
'; 
     } 
     else 
     { 
          echo 'Le message n\'a pu être envoyer
		Cliquer <a href="index.php">ici pour revenir a index. Merci'; 

     } 


Ensuite je dois introduire le code générer dans la case code ( un autre champ de ma table). il faut après que je fasse la page avec un code qui récupère le pseudo , le code d'activation et compare le code avec celui enregistrer , si c'est le même sa update le champ activation a 1 . Et c bon . c'est ça ? merci de m'aider pour la page qui traite de récupérer les donnée et d'updaté . Pouvez vous me dire si mon code marche ?
merci beaucoup

Répondre à max1395

4

Nabla's, le 26 sep 2009 à 12:11:37

Sans avoir essayé, oui je pense que ca marche (sinon ca n'en est pas loin).
le seule truc, c'est que pour la sécurité, tu le crée de manière aléatoire, entre 1 et 100... et tu n'enregistres pas le résultat dans la base de données!!! moi je créais ca a partir d'un cryptage md5 (donc pas aléatoire du tout, mais dépendant du login) et je n'avais donc pas besoin de l'enregistrer dans la base de données

lis les tutopriaux sur les base de données du siteduzero pour utiliser la base de donénes

pour la page d'activation, interesses toi à cette partie:

$securite = md5($login."ma securité")

//dans le script activation, tu vas verifier que la clef de sécuité est correcte
if($_GET['securite']==md5(md5($_GET['login]."ma securité")))
{
$requete="update utilisateurs set activation = 1 where login = $_GET[login]";
//et la t'executes la requete ..

.....
}

Répondre à Nabla's

5

max1395, le 27 sep 2009 à 13:21:25

Merci je suis en train de réaliser la page qui envoie l'email et j'ai un petit problème . Voila quand j'essaye sa me mets : Le mail na pu être envoyer . Donc le mauvais message . Si vous pouviez regarder le code et me dire ce qui ne va pas . merci Sinon tout a l'aire de marcher , j'introduis dans ma bdd le code de sécurité et je n'est pas encore fais la page de traitements d'activation . Quand j'introduis dans ma bdd les informations , c'est toutes les informations donc c'est pour ça que il y a beaucoup d'informations .

voila le code qui envoie le message :


// activation du compte
mt_srand((float) microtime()*1000000);

$securite = mt_rand(0, 100) ;
$email = $_POST["email"] ;

// envoie l'email

     $headers ='From: $email '; 
     $headers .='Reply-To: maxime4213@orange.fr'; 
     $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n"; 
     $headers .='Content-Transfer-Encoding: 8bit'; 

     $message ="<html><head><title>Activation de compte Max-fric.com</title></head><body>

lien activation : http://membres.lycos.fr/max13952/activation.php?login=$pseudo&securite=$securite<br />
</body></html>";


     if(mail('$email', 'Activation compte', $message, $headers)) 
     { 
          echo 'Le message a été envoyé avec succès .Nous allons vous répondre le plus rapidement possible .<br>
		  Cliquer <a href="index.php">ici </a>pour revenir a index. Merci'; 
     } 
     else 
     { 
          echo 'Le message n\'a pu être envoyer
		Cliquer <a href="index.php">ici pour revenir a index. Merci'; 

     } 


        //On balance le tout dans notre table
		
Mysql_query('INSERT INTO membre (id,pseudo,email,passe,prenom,naissance,pays,sexe,activation) 
VALUES ("","'.$pseudo.'", "'.$email.'", "'.$passe.'", "'.$prenom.'", "'.$naissance.'", "'.$pays.'", "'.$sexe.'","'.$securite.'") ')
 or die (mysql_error());

Au passage sa me mets aussi comme erreur : Column count doesn't match value count at row 1 si vous pouviez aussi m'aider a résoudre ce probleme .
merci beaucoup de votre aide qui m'aie d'une grande utilité car j'ai besoin de finir mon site très vite .

Répondre à max1395

6

Nabla's, le 27 sep 2009 à 14:21:23

Essayes de regler ton serveur smtp avec la fonction set_ini("smtp","......")
en, completant l'adresse du smtp

Répondre à Nabla's

7

max1395, le 27 sep 2009 à 17:55:47

Non ce n'est pas le probleme car quand je veux envoyer un message en l'indiquant directement sa marche

Répondre à max1395

8

Nabla's, le 28 sep 2009 à 09:56:17

Tu ne trouves pas bizarre le ."\n" au bout de ta 3° ligne de headers ?
moi, ce que je trouve encore plus bizarre, c'est qu'il n'y ai pas son petit copain "\r" avec lui !
regardes l'exemple 4: http://fr.php.net/manual/fr/function.mail.php

toutes les lignes de headers doivent se terminer par \r\n

Répondre à Nabla's

9

max1395, le 28 sep 2009 à 18:06:28

Bon j'ai corriger comme ça mes ça ne marche toujours pas :

<code>
<?php
$headers ='From: $email "\r\n" ';
$headers .='Reply-To: '."\n";
$headers .='Content-Type: text/html; charset="iso-8859-1"'. "\r\n";
$headers .='Content-Transfer-Encoding: 8bit';

$message ="<html><head><title>Un titre ici</title></head><body>

voter lien est http://**************/activation.php?email=$email&securite=$securite

</body></html>";



if(mail('$email', 'site', $message, $headers))
{
echo 'Le message a été envoyé avec succès ..<br>
Cliquer <a href="index.php">ici </a>pour revenir a index. Merci
';
}
else
{
echo 'Le message n\'a pu être envoyer
Cliquer <a href="index.php">ici pour revenir a index. Merci';
}
?>

Répondre à max1395

10

max1395, le 28 sep 2009 à 18:13:05

Ca me marque : le message n'a pu etre envoyer

Répondre à max1395

11

Nabla's, le 29 sep 2009 à 09:11:07

Avant de dire que ca fonctionne pas, regardes ce que tu as fait:

$headers ='From: $email "\r\n" ';
$headers .='Reply-To: '."\n";
$headers .='Content-Type: text/html; charset="iso-8859-1"'. "\r\n";
$headers .='Content-Transfer-Encoding: 8bit';

et regardes l'exemple:

$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Anniversaire <anniversaire@example.com>' . "\r\n";
$headers .= 'Cc: anniversaire_archive@example.com' . "\r\n";
$headers .= 'Bcc: anniversaire_verif@example.com' . "\r\n";


donc tu étudies ca, et tu reproposes un code...

Répondre à Nabla's

12

max1395, le 29 sep 2009 à 18:52:49

Bon j'ai refais mon code est ça donne ça :

     $headers ='From: $email'. "\r\n"; 
     $headers .='Reply-To: '."\r\n"; 
     $headers .='Content-Type: text/html; charset="iso-8859-1"'. "\r\n"; 
     $headers .='Content-Transfer-Encoding: 8bit'. "\r\n";  

     $message ="<html><head><title>Un titre ici</title></head><body>

voter lien est http://membres.lycos.fr/max13952/activation.php?email=$email&securite=$securite 

</body></html>";



     if(mail('$email', 'site', $message, $headers)) 
     { 
          echo 'Le message a été envoyé avec succès ..<br>
		  Cliquer <a href="index.php">ici </a>pour revenir a index. Merci
'; 
     } 
     else 
     { 
          echo 'Le message n\'a pu être envoyer
		Cliquer <a href="index.php">ici pour revenir a index. Merci'; 
     } 


et ça marche pas .......

Répondre à max1395

13

Nabla's, le 30 sep 2009 à 09:14:19

Message 6

Répondre à Nabla's

14

max1395, le 30 sep 2009 à 12:45:45

Mail la fonction mail est activé !

Répondre à max1395

15

Nabla's, le 30 sep 2009 à 13:39:05

Je te disais de vérifier que le smtp était bien précisé ...

1- es ce que tu travailles en local (avec easyphp, wamp ou autre), ou directement sur ton hébergeur ?
2- que retournes cette ligne de commande: echo ini_get('SMTP');

Répondre à Nabla's

16

max1395, le 30 sep 2009 à 15:15:37

Je trvaille sur un hebergeur gratuit , et ça ne renvoie rien

Répondre à max1395

17

Nabla's, le 30 sep 2009 à 16:12:33

Et tu es sur que l'envoi d'emails depuis ton site est autorisé ?
chez free par exemple,c 'est autorisé, mais limité (1000 ou 2000 mails par semaine)

essayes peut etre en local, avec easyphp, et utilises la fonction ini_set pour parametrer le SMTP de ton FAI

Répondre à Nabla's