Activation du compte
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
28 réponses
La problématique porte sur la mise en place d'un système d'activation de compte par inscription avec envoi d'un mail contenant un lien d'activation. Pour la sécurité, il est conseillé de générer une clé d'activation et de la vérifier sans la stocker, par exemple via md5(login + 'ma securité'). Dans le script d'activation, on compare la clé reçue avec celle calculée et, si elle est correcte, on met à jour l'activation à 1. En outre, des tests locaux et une gestion robuste des en-têtes et de la sécurité côté serveur évitent les limitations d'envoi et les risques d'exposition.
-
Quelqu'un pourrait essayer et me dire si ça marche ?
merci -
Je ne peux pas essayer justement je n'est pas encore configurer le serveur . Mais je vais reformuler le code alors . Ce ne sont que des choiffre la securite
-
Contributeurif(isset($_COOKIE["ID_UTILISATEUR"]))
{
header("Location: index.php");
}
==>>> perso, j'utiliserai les sessions à ta place, c'est plus passse partout. Car si ton navigateur n'accèpte pas les cookies, les sessions se feront dans l'url
f(!ereg("^[0-9]+$", $_GET["id"]) || !ereg("^[a-f0-9]{8}$", strtolower($_GET["securite"])))
==> comprend aps les expressiosn régulières moi ;) dsl
et quadn tu dis "ca marche pas".... est ce que tu sais ou ca passe ???? dans quel coin ca plante? le message affiché ? -
Bon en attendant j'ai fais la page d'activation , elle n'a pas l'air de marcher si vous pouviez regarder
<?php include('include.php'); ?> <? // Redirige l'utilisateur s'il est déjà identifié if(isset($_COOKIE["ID_UTILISATEUR"])) { header("Location: index.php"); } else { // Vérifie que de bonnes valeurs sont passées en paramètres if(!ereg("^[0-9]+$", $_GET["id"]) || !ereg("^[a-f0-9]{8}$", strtolower($_GET["securite"]))) { header("Location: index.php"); } else { // Connexion à la base de données // Valeurs à modifier selon vos paramètres configuration mysql_connect("localhost", "max13952","lola130895"); mysql_select_db("max13952_db"); // Sélection de l'utilisateur concerné $result = mysql_query(" SELECT activation , securite , email FROM membre WHERE email = '" . $_GET["email"] . "' AND securite = '" . strtolower($_GET["securite"]) . "' "); // Si une erreur survient if(!$result) { $message = "Une erreur est survenue lors de l'activation de votre compte utilisateur"; } else { // Si aucun enregistrement n'est trouvé if(mysql_num_rows($result) == 0) { header("Location: index.php"); } else { // Récupération du tableau de données retourné $row = mysql_fetch_array($result); // Vérification que le compte ne soit pas déjà activé if($row["activation"] != 0) { $message = "Votre compte utilisateur a déjà été activé"; } else { // Activation du compte utilisateur $result = mysql_query(" UPDATE SET activation = '1' WHERE email = '" . $_GET["id"] . "' AND securite = '" . strtolower($_GET["clef"]) . "' "); // Si une erreur survient if(!$result) { $message = "Une erreur est survenue lors de l'activation de votre compte utilisateur"; } else { $message = "Votre compte utilisateur a correctement été activé"; } } } } // Fermeture de la connexion à la base de données mysql_close(); } } ?> <p><?php echo $message; ?></p>
merci . -
oui c'est vrai merci je vais essayer
-
Contributeurrien ne t'empèche de t'assurer que la fonction fonctionne bien en testant en local avec easyphp ou wamp
-
a ok merci donc j'attendrais pour finir ça d'avoir mon hebergeur definitif car la c'est un hebergeur grauit ^^ .
merci -
oui mais la ça depend de l'adresse de la peronne qui s'inscrit don je ne peux pas savoir
-
Contributeursi echo ini_get('SMTP'); ne renvoie rien,c a veut dire que la fonction mail ne saura pas quel serveur utiliser. Ca ne marchera pas.
il faut forcement préciser un serveur smtp (soit c'est déja fait, soit c'est à toi de le faire) -
up
-
nn je ne crois pas que ça soit le probleme . il n'y aurait pas un probleme de code ?
-
Contributeuret 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 -
je trvaille sur un hebergeur gratuit , et ça ne renvoie rien
-
Contributeurje 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'); -
Mail la fonction mail est activé !
-
Contributeurmessage 6
-
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 ....... -
Contributeuravant 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... -
Ca me marque : le message n'a pu etre envoyer
-
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';
}
?>
- 1
- 2