Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/06/2011, 12h43   #1
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Par défaut validation d'une inscription

Bonjour,

j'ai actuellement un formulaire html qui permet une inscription, puis qui envoie un mail pour valider l'inscription ; l'utilisateur doit cliquer sur le lien du mail pour valider l'inscription. Donc, quand il clique, ça lance une requête vers MySQL qui est censée mettre à 1 un champ "valide". Mais évidemment, je ne voudrais le faire que pour cet utilisateur ; il existe bien un champ "pseudo", mais quand l'utilisateur clique, la page appelée n'a pas cette information : comment faire ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 12h49   #2
Membre Expert
 
Avatar de supersnail
 
Homme
Inscription : novembre 2006
Messages : 1 402
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 1 402
Points : 1 991
Points : 1 991
Bonjour,

La méthode "classique" consisterait à générer un token aléatoire (jeton) stockée dans la BDD lors de l'inscription de l'utilisateur et de passer celui-ci en paramètre de la page de validation. Une fois la validation effectuée, on pourra supprimer le token de la BDD Ainsi tu n'as pas besoin de transmettre le pseudo de l'utilisateur, et on a juste un token aléatoire à envoyer
__________________
Toute question technique envoyée en MP ira directement à la poubelle

Un code ne marchera jamais,il n'a jamais reçu la capacité de se déplacer.
Inutile donc de dire "ça marche pas", donnez plûtot des informations précises afin de mieux pouvoir vous aider.


Grand gourou de la -attitude - Sauvons Internet!
supersnail est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 18h59   #3
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
J'ai opté pour une méthode non-classique (en fait la continuité de mon idée), mais ça coince et je ne comprends pas pourquoi ; de la page "action" du formulaire d'inscription, on connaît le pseudo (il vient d'être saisi) ; comme l'envoi du mail doit se faire depuis un autre serveur (apparemment, l'envoi de mail est impossible chez Free (du moins pour moi)), j'envois toutes les infos pour faire ce mail à l'autre serveur via une iframe :
Code :
 <iframe frameborder=0 src="http://---/mail.php?dest=<?=$destinataire?>&sujet=<?=$Subject?>&pseudo=<?=$pseudo?>&message=<?=$mail_texte?>&url=<?=$mail_URL?>&em=<?=$mailemetteur?>" ></iframe>
et ensuite, depuis cet autre serveur, on est censé envoyer le mail qui permettra de valider l'inscription :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php 
$destinataire = $_GET['dest'];
$sujet =$_GET['sujet'];
$texte = $_GET['message'];
$url=$_GET['url'];
$em=$_GET['em'];
$pseudo=$_GET['pseudo'];
echo 'pseudo ds page confirmation :'.$pseudo.'<br>';
$message="Pour confirmer votre inscription, veuillez cliquer sur ce mail : <a href=".$url."?pseudo=".$pseudo.">".$texte."</a>";
 
   $headers  = "MIME-Version: 1.0 \n";
   $headers .= "Content-type: text/html; charset=iso-8859-1 \n";
   $headers .= "From: ".$em."  \n";
   $headers.='Reply-To: '.$em. "\r\n";
 
mail($destinataire,
     $sujet,
     $message,
     $headers);
?>
Le petit problème, c'est que sur la page d'envoi du mail (mail.php), la variable $pseudo est vide ; pourquoi ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 19h50   #4
Membre éclairé
 
Homme
Webmaster
Inscription : septembre 2007
Messages : 376
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2007
Messages : 376
Points : 377
Points : 377
Salut

Alors avant de continuer dans ta méthode, autant t'annoncer que ta méthode perd tout l'intéret de base, c'est à dire vérifier la validité de l'email.

En effet, si il suffit du pseudo pour valider une inscription, une fois la page cible repérée, rien ne m'empêche de m'inscrire avec une adresse bidon et de ne pas me servir du lien dans le mail pour activer mon compte

La méthode de supersnail est donc bien meilleure. Quand tu insères ton membre en BDD, tu lui génères une clé (token) unique. et c'est cette clé que tu envoies dans ton mail

Ainsi, sur ta page de vérification, tu cherches le membre qui a la clé passée en paramètre et tu le passes en actif (penses à supprimer la clé au passage)

Ainsi, il est impossible de bypasser ton système de vérification
Finality est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 20h19   #5
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
OK, compris ; donc j'essaye de suivre ton conseil, puis j'en rendrai compte ici (ce soir ou demain)
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 20h35   #6
Membre éclairé
 
Homme
Webmaster
Inscription : septembre 2007
Messages : 376
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2007
Messages : 376
Points : 377
Points : 377
Citation:
Envoyé par laurentSc Voir le message
OK, compris ; donc j'essaye de suivre ton conseil, puis j'en rendrai compte ici (ce soir ou demain)
Oki pas de soucis

Par contre ça m'étonne pour ton problème d'envoi de mail pour Free, il me semble que Free autorise l'envoi de mails ...
Finality est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 01h09   #7
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Ca y est ; c'est au point (01h du matin passé...)(c'est pas fini, mais l'inscription est validée par un mail ; pour le jeton : rand(0,1000000) ; ça va ?).
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 10h56   #8
Membre éclairé
 
Homme
Webmaster
Inscription : septembre 2007
Messages : 376
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2007
Messages : 376
Points : 377
Points : 377
Citation:
Envoyé par laurentSc Voir le message
Ca y est ; c'est au point (01h du matin passé...)(c'est pas fini, mais l'inscription est validée par un mail ; pour le jeton : rand(0,1000000) ; ça va ?).
Content pour toi

Au niveau du token, j'ai pris l'habitude de mélanger des chiffres et des lettres, mais bon après chacun fois midi à sa porte
Finality est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 11h02   #9
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
j'ai pris l'habitude de mélanger des chiffres et des lettres
Ca l'air d'une bonne habitude, mais comment fais-tu cela ? Existe-t-il une fonction qui fait ça tout seul ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 11h08   #10
En attente de confirmation mail
 
Étudiant
Inscription : avril 2011
Messages : 19
Détails du profil
Informations personnelles :
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 19
Points : 34
Points : 34
ding dong...

mais qui est ce donc a cette heure-ci ?

uniqid()

Fonction sympathique que j'ai découvert il y a peu de temps.

Enfin après la chaine peut être un peu courte (13 caractères)
dev_cisii est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 11h26   #11
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
OK, merci pour la fonction ; et dans mysql, j'avais jeton int ;
jeton varchar(13), ça irait mieux ?
Citation:
mais qui est ce donc a cette heure-ci ?
Même en ne me levant qu'à 9h, j'étais un peu juste...
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h53.


 
 
 
 
Partenaires

Hébergement Web