A voir également:
- Confirmation email PHP
- Confirmation de lecture whatsapp - Guide
- Comment creer un compte email - Guide
- Confirmation de lecture gmail - Guide
- Easy php - Télécharger - Divers Web & Internet
- Confirmation de lecture outlook - Guide
7 réponses
Up ? Une dernière fois...
Bigfish72
Messages postés
79
Date d'inscription
samedi 28 mars 2009
Statut
Membre
Dernière intervention
11 avril 2009
4
30 mars 2009 à 00:21
30 mars 2009 à 00:21
Salut, pour ta question, c'est simple, ton script demande de parcourir toute ta table donc tu affiches tout.
Mets une clause WHERE dans ta requete
$reponse = mysql_query("SELECT * FROM tbl_membre where pseudo=\"$pseudo\" ") or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse) )
{
}
Mais je ne vois pas l'intérêt de récupérer le mot de passe et pseudo dans la bdd puisque tu as déjà ces valeurs par les variables POST
Et un conseil, crypte tes mots de passe dans ta table, c'est une sécurité importante.
EDIT : on m'a devancé ;)
Pour la deuxième question, c'est simple : tu envois un lien avec un numéro d'activation préalablement enregistré dans ta base au moment de l'inscription. Et tu crées une page "activation.php" qui met une valeur de 1 au lieu de 0 dans un champ "activation". Quand l'utilisateur entre ses identifiants, tu vérifies si activation=0 ou 1
Mets une clause WHERE dans ta requete
$reponse = mysql_query("SELECT * FROM tbl_membre where pseudo=\"$pseudo\" ") or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse) )
{
}
Mais je ne vois pas l'intérêt de récupérer le mot de passe et pseudo dans la bdd puisque tu as déjà ces valeurs par les variables POST
Et un conseil, crypte tes mots de passe dans ta table, c'est une sécurité importante.
EDIT : on m'a devancé ;)
Pour la deuxième question, c'est simple : tu envois un lien avec un numéro d'activation préalablement enregistré dans ta base au moment de l'inscription. Et tu crées une page "activation.php" qui met une valeur de 1 au lieu de 0 dans un champ "activation". Quand l'utilisateur entre ses identifiants, tu vérifies si activation=0 ou 1
(Bah devancé ^^).
Pour la confirmation de l'email, rajoute un champs "date_inscripton" que tu mets à la date où ton utilisateur s'inscrit.
A l'inscription, tu mets ce champs à la date du jour ( https://www.php.net/manual/en/function.date.php ) .
Tu envoies un mail avec un lien par exemple http://monsite.fr/confirmation.php?user=73&key=759432421212 , que tu génères avec un algorithme quelconque par rapport au pseudo ou à l'id de l'inscrit.
Sur ta page confirmation.php,
Tu vérifies avec l'algorithme que "key" est bonne, et tu effaces la date d'inscription.
(J'ai mis ici la date d'inscription pour que tu puisses faire un script qui se lance toutes les X jours et qui nettoie les utilisateurs non-confirmés.)
Si tu veux moins te compliquer la vie, tu peux générer une clée aléatoire avec des chiffres et des lettres, et la mettre dans ta BDD. Et tu vérifies sur la page de confirmation si la clée est OK.
Pour ta page de connexion, il faudra ensuite que tu rajoute un WHERE cle is NULL; ou date_inscription is NULL;
(je sais pas si c'est clair)
Si tu as besoin de précisions, n'hésite pas.
(je parie que quelqu'un m'a encore devancé ^^)
Pour la confirmation de l'email, rajoute un champs "date_inscripton" que tu mets à la date où ton utilisateur s'inscrit.
A l'inscription, tu mets ce champs à la date du jour ( https://www.php.net/manual/en/function.date.php ) .
Tu envoies un mail avec un lien par exemple http://monsite.fr/confirmation.php?user=73&key=759432421212 , que tu génères avec un algorithme quelconque par rapport au pseudo ou à l'id de l'inscrit.
Sur ta page confirmation.php,
Tu vérifies avec l'algorithme que "key" est bonne, et tu effaces la date d'inscription.
(J'ai mis ici la date d'inscription pour que tu puisses faire un script qui se lance toutes les X jours et qui nettoie les utilisateurs non-confirmés.)
Si tu veux moins te compliquer la vie, tu peux générer une clée aléatoire avec des chiffres et des lettres, et la mettre dans ta BDD. Et tu vérifies sur la page de confirmation si la clée est OK.
Pour ta page de connexion, il faudra ensuite que tu rajoute un WHERE cle is NULL; ou date_inscription is NULL;
(je sais pas si c'est clair)
Si tu as besoin de précisions, n'hésite pas.
(je parie que quelqu'un m'a encore devancé ^^)
Désolé je n'avais pas vu vos réponses et merci bien !
Il est un peu tard maintenant alors je risque de voir ça demain... Je débute vraiment en php (vous l'aurez remarqué :D). Pour la première question c'est ok j'ai compris et tout d'un coup ma question semblait bien bête.
_______
Pour la 2ème je ne saisis pas tout (comme la génération d'un algorithme entre autre) . Pouvez vous me donner un exemple précis de script ? Je peux vous envoyer ceux que j'ai déjà si besoin est.
Et pour crypter le mot de passe ? Faut il juste spécifier pass_md5 comme entrée dans la BDD ou y'a t'il des codes php précis ?
Encore une fois je m'excuse mais je débute vraiment le php/mysql...
Et si vous avez un tuto clair sur la confirmation d'email je suis preneur car j'en ai suivi quelques uns trouvé sur internet sans succès
Il est un peu tard maintenant alors je risque de voir ça demain... Je débute vraiment en php (vous l'aurez remarqué :D). Pour la première question c'est ok j'ai compris et tout d'un coup ma question semblait bien bête.
_______
Pour la 2ème je ne saisis pas tout (comme la génération d'un algorithme entre autre) . Pouvez vous me donner un exemple précis de script ? Je peux vous envoyer ceux que j'ai déjà si besoin est.
Et pour crypter le mot de passe ? Faut il juste spécifier pass_md5 comme entrée dans la BDD ou y'a t'il des codes php précis ?
Encore une fois je m'excuse mais je débute vraiment le php/mysql...
Et si vous avez un tuto clair sur la confirmation d'email je suis preneur car j'en ai suivi quelques uns trouvé sur internet sans succès
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Laisse tomber l'algorithme de vérification pour l'instant. C'est pas très important c'était juste pour que ta base de données ne soit pas surchargées de comptes non-validés inutiles qui prennent de la place.
Mais vu que tu débutes, c'est pas très important.
Je ferais un exemple de code de confirmation demain soir (cours la journée :/) si j'y pense (suis tête en l'air).
Et j'essairais de bien le commenter pour que ça soit clair.
(P-e que quelqu'un d'autre le fera avant moi).
Bonne nuit à toi,
(et il est pas tard, il est que minuit ! (hein on a changé d'heure !!!))
Mais vu que tu débutes, c'est pas très important.
Je ferais un exemple de code de confirmation demain soir (cours la journée :/) si j'y pense (suis tête en l'air).
Et j'essairais de bien le commenter pour que ça soit clair.
(P-e que quelqu'un d'autre le fera avant moi).
Bonne nuit à toi,
(et il est pas tard, il est que minuit ! (hein on a changé d'heure !!!))
function generer_mdp($len)
{
//On initialise le mot de passe à vide
$r = '';
//On fait une boucle de $len tours pour avoir le bon nombre de caractères.
for($i=0; $i<$len; $i++)
{
//si i%2=0 (c'est à dire que le reste de la division de i par 2 est 0 (nombre pair quoi), on génere un nombre. Rand servant à obtenir un nombre aléatoire entre 0 et 9
if($i%2==0)
$r .= rand(0,9);
else
//si c'est impair, on génère une lettre (si tu veux mieux comprendre cherche "php chr" et "php ord" dans google.
$r .= chr(rand(0, 25) + ord('a'));
}
return $r;
}
<?php
$pseudo =$_POST["pseudo"];
$motdepasse=$_POST["motdepasse"];
$email =$_POST["email"];
mysql_connect("localhost", "root", "");
mysql_select_db("baseMEMBRES");
//On génère une clé avec la fonction précédente., et tu choisis la longueur de la clée que tu veux en paramêtre
$key = generer_mdp(12);
//Il te faut un champs clé dans ta table tbl_membre et tu insères la clé dans ta table
$inscription = mysql_query("INSERT INTO tbl_membre (id, pseudo, motdepasse, email, cle) VALUES('', '$pseudo', '$motdepasse', '$email',".$key.")") or die(mysql_error());
$reponse = mysql_query("SELECT * FROM tbl_membre") or die(mysql_error());
//Envoi du mail de confirmation (vérifie que ton hebergeur autorise l'envoi de mail)
//Note : la j'ai mis last inserted id qui retourne le dernier id inséré dans la base mais tu ferais mieux de faire une requête pour récuperer l'id plutot.
mail($email, 'Confirmation de votre inscription sur trucbidule.com', "Activez votre compte en cliquant sur le lien si dessous\nhttp://www.trucbidule.com/confirmation.php?id=".last_inserted_id()."&key=".$key."\n");
while ($donnees = mysql_fetch_array($reponse) )
{
?>
//confirmation.php
//On vérifie que les paramètres sont là
if(isset($_GET["id"])&&isset($_GET["key"]))
{
//Connexion à la BDD
mysql_connect("localhost", "root", "");
mysql_select_db("baseMEMBRES");
//On récupère la clé stockée dans la BDD qu'on a généré à l'inscription
$reponse = mysql_query("SELECT key FROM tbl_membre WHERE id=".$_GET["id"]);
while ($donnees = mysql_fetch_array($reponse) )
{
//Si la clé dans la base correspond à celle passée dans l'adresse
if(donnees["key"]==$_GET["key"])
{
//On met key a NULL dans la table
mysql_query("UPDATE tbl_membre SET key=NULL WHERE id=".$_GET["id"]);
echo "Votre compte a été activé";
}
}
Ensuite dans ton formulaire de connexion, au lieu de faire
SELECT id FROM tbl_membre WHERE login='toto' and motdepasse="zoubidou";
Tu fais :
SELECT id FROM tbl_membre WHERE login='toto' and motdepasse="zoubidou" AND key=null;
Voilà voilà,
Si c'est pas clair, suis là (ou dans le coin) pour tes questions.
(Euh, j'ai pas codé super bien par contre, avec les déspécialisations qu'il faut etc dicholé ^^).
{
//On initialise le mot de passe à vide
$r = '';
//On fait une boucle de $len tours pour avoir le bon nombre de caractères.
for($i=0; $i<$len; $i++)
{
//si i%2=0 (c'est à dire que le reste de la division de i par 2 est 0 (nombre pair quoi), on génere un nombre. Rand servant à obtenir un nombre aléatoire entre 0 et 9
if($i%2==0)
$r .= rand(0,9);
else
//si c'est impair, on génère une lettre (si tu veux mieux comprendre cherche "php chr" et "php ord" dans google.
$r .= chr(rand(0, 25) + ord('a'));
}
return $r;
}
<?php
$pseudo =$_POST["pseudo"];
$motdepasse=$_POST["motdepasse"];
$email =$_POST["email"];
mysql_connect("localhost", "root", "");
mysql_select_db("baseMEMBRES");
//On génère une clé avec la fonction précédente., et tu choisis la longueur de la clée que tu veux en paramêtre
$key = generer_mdp(12);
//Il te faut un champs clé dans ta table tbl_membre et tu insères la clé dans ta table
$inscription = mysql_query("INSERT INTO tbl_membre (id, pseudo, motdepasse, email, cle) VALUES('', '$pseudo', '$motdepasse', '$email',".$key.")") or die(mysql_error());
$reponse = mysql_query("SELECT * FROM tbl_membre") or die(mysql_error());
//Envoi du mail de confirmation (vérifie que ton hebergeur autorise l'envoi de mail)
//Note : la j'ai mis last inserted id qui retourne le dernier id inséré dans la base mais tu ferais mieux de faire une requête pour récuperer l'id plutot.
mail($email, 'Confirmation de votre inscription sur trucbidule.com', "Activez votre compte en cliquant sur le lien si dessous\nhttp://www.trucbidule.com/confirmation.php?id=".last_inserted_id()."&key=".$key."\n");
while ($donnees = mysql_fetch_array($reponse) )
{
?>
//confirmation.php
//On vérifie que les paramètres sont là
if(isset($_GET["id"])&&isset($_GET["key"]))
{
//Connexion à la BDD
mysql_connect("localhost", "root", "");
mysql_select_db("baseMEMBRES");
//On récupère la clé stockée dans la BDD qu'on a généré à l'inscription
$reponse = mysql_query("SELECT key FROM tbl_membre WHERE id=".$_GET["id"]);
while ($donnees = mysql_fetch_array($reponse) )
{
//Si la clé dans la base correspond à celle passée dans l'adresse
if(donnees["key"]==$_GET["key"])
{
//On met key a NULL dans la table
mysql_query("UPDATE tbl_membre SET key=NULL WHERE id=".$_GET["id"]);
echo "Votre compte a été activé";
}
}
Ensuite dans ton formulaire de connexion, au lieu de faire
SELECT id FROM tbl_membre WHERE login='toto' and motdepasse="zoubidou";
Tu fais :
SELECT id FROM tbl_membre WHERE login='toto' and motdepasse="zoubidou" AND key=null;
Voilà voilà,
Si c'est pas clair, suis là (ou dans le coin) pour tes questions.
(Euh, j'ai pas codé super bien par contre, avec les déspécialisations qu'il faut etc dicholé ^^).
Bigfish72
Messages postés
79
Date d'inscription
samedi 28 mars 2009
Statut
Membre
Dernière intervention
11 avril 2009
4
30 mars 2009 à 18:51
30 mars 2009 à 18:51
Salut,
pour crypter un mot de passe : $mot_de_passe_crypte=md5($mot_de_passe);
Et bien sûr il faut penser à le crypter dans ta page de connexion avant de comparer avec le mot de passe contenu dans la base de données.
pour crypter un mot de passe : $mot_de_passe_crypte=md5($mot_de_passe);
Et bien sûr il faut penser à le crypter dans ta page de connexion avant de comparer avec le mot de passe contenu dans la base de données.