salut
comment envoyer un Mail d'activation a un membre qui vient de s'inscrire et l'empechant d'acceder à son espace membre avant de cliquer sur ce lien ?
merci et @+
salut
comment envoyer un Mail d'activation a un membre qui vient de s'inscrire et l'empechant d'acceder à son espace membre avant de cliquer sur ce lien ?
merci et @+
Ce n'est que Théorie j'ai jamais testé...
Dans ton mail tu mets ton lien avec une certaine chaine qui aura pour but d'aller sur ton site et de lancer une opération dans le header.php par exemple.
Cette opération se connectera à la bdd et modifiera un champ de ta bdd du style compte activé (user_active) se qui permettra au client de se connecter.
Bien sur il faut que ce champ soit faux avant le lancement de cette page...
Tu vois un peu mon idée...
Maintenant il faut trouver le $_GET que tu vas mettre dans l'url pour montrer au header que c'est une activation et le user_id du client.
Tu approuves ou pas ?? lol
ps: on me dira que c'est quasiment comme ca que les forums phpbb mais bonj'en ai un donc je base dessus lol
merci
voila j'envoie a chaque nouveau membre un lien vers une page activaton.php, le lient va emporter le Id_membre, et la page permetra de changer un champ de la table membre de 0 a 1, ouvrir une session puis le redireger vers l'index.
et au moment de l'authentification je test a chaque fois si le membre a activer son compte ou non.
c'est tous? y'a pas d'autres details?
@+
Si la session est déjà ouverte pas besoin de retester si le compte est activé je pense...
Mais si pas de session et qu'il y a tentative de connection il faudrait effectivement tester le champ user_active...
Sinon à part tout ce que j'ai dis (proposé) je vois pas ce qui pourrait manquer...Teste et tiens nous au courant et s'il manque quelque chose on completera![]()
Il faut un code d'activation en plus.
Vous ajoutez un champ cod_activation de type CHAR(8) non nul dans votre base.
Vous ajoutez un champ de type activation de type DATETIME pouvant être nul.
Vous générez un mot aléatoire de 8 lettres.
Vous insérez votre utilisateur dans la base en insérant le code activation mais pas la date d'activation qui reste nulle évidemment.
INSERT INTO UTILISATEUR
(ID_UTILISATEUR,MAIL_UTILISATEUR,MDP_UTILISATEUR,COD_ACTIVATION)
VALUES (5,'toto@example.org','aaaaaaaaaaa','abcdefghi');
Vous envoyez un mail contenant un lien avec le numéro de membre et le code d'activation.
Su la page d'activation, vous vérifiez qu'à l'id_membre correspond bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6Bonjour toto, Cliquez sur ce lien pour activer votre compte : http://www.example.org/activation.php?id=5&activation=abcdefghi Bye bye
au code activation :
Si la requête ne modifie aucune ligne, alors c'est que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 UPDATE UTILISATEUR SET ACTIVATION=CURRENT_DATETIME WHERE ID_UTILISATEUR=5 AND COD_UTILISATEUR='abcdefghi' AND ACTIVATION IS NULLDans la page d'identification, vous ajoutez un test qui vérifie que la date d'activation n'est pas nulle.
- le code est erroné
- l'utilisateur a été effacé
- le compte est déjà activé
merci Alexandre T egalement Kerod c'est super
d'apres mes connaisses, on envoie un lien d'activation à un nouveau membre pour etre sur que son adresse e-mail est valide.
mais avec cette methode je pense que c'est plus que ça ?est ce c'est pour des raison de securité ?
comment un code peut etre erroné?Envoyé par Alexandre T
@+
Quand on raisonne comme un internaute honnête, c'est impossible. L'utilisateur reçoit son mail, clique sur le lien et le code est trop logiquement bon.
Maintenant je vais conter une petite histoire...
Il était une fois toto, un internaute malhonnête, il veut venir vous insulter mais ne pas laisser son email... Il ne reçoit pas le mail d'activation. Il doi pourtant l'activer pour poster sa propagande, ses insultes, etc... Alors il se demande "Comment le webmaster a-t-il normmé la page et trouve que la page d'activation ?" . La page d'identification est identification.php ... La page de recherche est recherche.php... Il réfléchit et tente logiquement :
http://www.example.org/activation.php
Au pire il fait une recherche sur google de toutes les pages du site http://www.example.org !
Bref, il trouve la page... Là le message d'erreur lui dit que son identifiant n'est pas renseigné....
Il va sur la page de consultation de profil, d'un autre membre et il lit :
http://www.example.org/visualisation.php?id=24
Ok les identifiants sont sous le code id
Son id est 32. Ok alors il tente :
http://www.example.org/activation.php?id=32
Il ne connait pas son id ? Aucun problème, il commencera à 1 et montera jusqu'à 300....
Si il n'y a aucun test sur le code d'activation alors il activera tous les comptes du site... Pourtant il a filé une adresse mail erronée !
Si il ya un code d'activation qui est testé et vérifié, il n'essaiera pas toutes les combinaisons... C'est trop long !
le code peut etre errone si par exemple, en le copiant dans l'URL par ctrl+C ctrl+V (recommender avec certains hebergeur), il lui manque une lettre, caractere.
Ce systeme est plus sur egalement, je pense, pour les bot qui peuvent s'amuser a s'inscrire en remplissant les formulaires tout seul.
De plus, ca te permet de virer tous les boulets qui ont pas validés leur compte au bout d'un mois
Et si tu garde l'adresse email, tu peux faire le bon vieu test de un compte par adresse email aussi ^^
voila une très bonne information qui s'ajoute.
une dernière question :
-> comment generer un mot aléatoire de 8 lettre ??
-> "select * from membre where login=$log and mdp=$passe and dat_activ<> NULL"
c'est bonne pour l'authentification??
et @+
Avec un for avec un $i allant de 0 à 7 et à l'intérieur une concaténation de char(rand(0,25)+95)...
Pour le rand il faut vérifier j'en suis plus trop sur pour le code caractère
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 for($i=0;$i<8;$i++) chaine .= char(rand(0,25)+95);
pour le select je serai plutot partant pour un (mais ce serait apres l'activation ) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part select * from membre where login='$log' and mdp='$passe' and dat_activ<> NULL
Si vous voulez des codes d'activation "phonétiquement prononçable il y a cela aussi : http://pear.php.net/package/Text_Password
et pour la fonction mail() sa marche au local
c'est à dire si je la test au local je reçois l'e-mail envoyé ou non??
@+
Bonjour, je serai intéressé de savoir comment faire.Envoyé par riesseg
Est ce qu'il faut lancer une tâche cron toutes les 48heures (dans mon cas) ?
Est ce qu'il faut lancer un script en l'appelant dans l'URL ?
Moi je ferais un script delestage.php, qui contient un script qui :
- se connecte à la base de données,
- sélectionne tous les membres dont le compte n'a pas été activé depuis 48heures
- delete les membres concernés
- tous les 2 jours je lance le script en tapant http://www.exemple.com/delestage.php
Merci beaucoup
Plusieurs solutions sont possiblesEnvoyé par ayvong
1 - Faire un "cron", appelez la page delestage.php via lynx. Mais cette méthode consomme un peu plus de ressources que la méthode 2 (lancement de lynx, utilisation d'apache, php puis mysql). De plus n'importe quel imbécile, peut appeler la page delestage.php
2 - Faire un "cron", lancer un script SQL via le client mysql
3 - En utilisant MySQL5.2, utiliser le gestionnaire d'évènements (j'ai écrit un tutoriel à ce sujet : http://atranchant.developpez.com)
4 - En faisant comme tu le fais
5 - En installant sur ta machine un cron qui va interroger via un navigateur tel lynx ta page delestage.php
Les points un et deux nécessitent un accès sur le serveur pour paramétrer cron. Typiquement, il faut un serveur dédié ou virtuellement dédié. Certains hébergeurs proposent des solutions palliatives. Mais tous les hébergeurs ne le permettent pas. Yellis le fait et tu n'es même pas obligé de prendre un serveur dédié. Il y a un robot php et un robot SQL que tu paramètres un peu comme tu veux.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager