[RESOLU] Oubli mot de passe script

Eléphant du PHP | 243 Messages

25 août 2013, 13:57

Bonjour à tous,
Je rencontre actuellement un problème. Je développe sur un panel une partie "Mot de Passe Oublié". Je souhaite que l'utilisateur ayant oublié son mot de passe, à l'aide de son Email, puisse en recevoir un nouveau.
Première difficulté : Il me faudrait une génération de lien, avec lequel, l'utilisateur pourra s'y rendre et ainsi recevoir un autre mail avec son mot de passe généré aléatoirement. Par quel moyen je pourrais générer ce lien avec le maximum de sécurité ?
Deuxième difficulté : Lors de l'envoi du mail de confirmation ( après avoir cliqué sur le lien généré ), je souhaite envoyer le nouveau mot de passe généré en mail, mais j'ai un soucis au moment d'implanter le mot de passe dans le message. Voici mon code :
<?php
$pass = test
$message ='<html><head><title>Bonjour,</title></head><body>voici votre nouveau mots de passe : //Ici je dois intégrer le $pass// </body></html>';
?>
Merci de l'aide que vous m'apporterez.
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

Eléphant du PHP | 243 Messages

25 août 2013, 15:33

J'ai trouvé pour le deuxième problème :
$message ='<html><head><title>Bonjour,</title></head><body>voici votre nouveau mots de passe : '.$pass.'</body></html>';
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

ViPHP
xTG
ViPHP | 7331 Messages

25 août 2013, 15:48

Pourquoi deux emails ?

Le plus simple est le système suivant :
Etape 1 :
- une page où l'on renseigne son email pour demander un changement de mot de passe
- tu génères un enregistrement en bdd avec une clé et une date d'expiration associée à cet email
- tu envois par email le lien avec la clé

Etape 2 :
- le membre clique sur le lien dans le mail
- grâce à la clé tu récupères l'enregistrement en bdd
- tu vérifies que la date d'expiration n'est pas dépassée
- puis tu lui affiches un formulaire de changement de mot de passe avec effet immédiat

Car envoyer en clair un mot de passe via email... C'est montrer aux utilisateurs qu'on fait peu fi de leurs données personnelles. ;)

Eléphant du PHP | 243 Messages

25 août 2013, 16:32

Oui, je pense que je vais passer par ce style de récupération. Mes problèmes étant résolus, je viens d'en rencontrer un nouveau.
Je m'explique : Mon panel ( disponible ici http://nohope.fr/panel ) est entièrement composé de balise <form>. J'aimerais que lorsque l'utilisateur utilise le bouton connexion, il soit redirigé vers une autre balise form sans que la page ne soit rechargé. Voici mes codes pour vous expliquez un peu mieux :

La partie connexion :
<input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>">
<input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>">
<input type="submit" name="connexion" value="Connexion" rel="indexpanel" class="indexpanel linkform" >
Le changement de form est possible grâce à rel="indexpanel" class="indexpanel linkform

Donc, à ce moment là, si on appuie sur Connexion, nous sommes bien redirigé vers la balise form du panel. C'est à ce moment là que survient le problème. Dans la nouvelle balise form qui s'ouvre, j'ai mis ce code php qui permet de récupérer les informations mises au dessus :
echo $_POST['login'];
Mais j'obtient cette erreur : Undefined index: login in /var/www/panel/index.php on line 206

Merci de l'aide que vous m'apportez.
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

ViPHP
xTG
ViPHP | 7331 Messages

25 août 2013, 19:22

Des données via POST impliquent forcement un rechargement de la page ou bien un aller-retour de données via une requête asynchrone (Ajax).

PHP s'exécute côté serveur, quand la page s'affiche PHP a déjà évalué la requête et envoyé la réponse (que tu affiches).
Il n'est donc pas possible sans rechargement de page de réévaluer une portion de code PHP.

Concernant ta structure de formulaire j'avoue ne pas comprendre...

Eléphant du PHP | 243 Messages

25 août 2013, 20:38

Merci pour ta réponse. Je pensais vraiment que l'on pouvait prendre les données sans rechargement, mais bon :(
Sinon, la structure est bizarre, mais si tu cherches à la comprendre, rendez vous sur cette page : http://tympanus.net/codrops/2011/01/06/ ... switching/
C'est ici que je me suis procuré les bases.
Encore merci et bonne soirée.
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

ViPHP
xTG
ViPHP | 7331 Messages

25 août 2013, 21:40

Je comprends mieux ce que tu veux faire.

Ce tutorial en fait ne fait que de l'animation pour passer d'un formulaire à un autre. Il ne soumet pas le formulaire précédent !
Tu ne peux pas traiter les données du sous-formulaire précédent avec PHP avec cette technique car le serveur n'a pas été solicité.

Pour prendre une image plus parlante c'est comme si sur ce forum tu voulais poster un message.
Tu affiches le formulaire de rédaction, tu renseignes les champs.
Puis tu ouvres un nouvel onglet dans ton navigateur (ou une fenêtre) et tu réaccèdes au forum.
Et là tu cliques pour accéder à un formulaire d'édition de l'un de tes messages par exemple.
Ton premier message a-t-il été posté ? Absolument pas. ;)

Bien sûr on peut utiliser des animations telles que celle-ci pour passer d'une "page" à une autre.
Mais cela implique de faire passer toutes tes données par des requêtes Asynchrones.
Tu trouveras des exemples sur la toile tels que celui-ci : http://chez-syl.fr/2012/01/envoyer-un-f ... y-et-json/
Après il faut combiner les deux, à savoir que l'animation doit se passer dans le traitement de réception des données JSON (réponse à la requête asynchrone).

Eléphant du PHP | 243 Messages

25 août 2013, 22:51

Merci beaucoup.
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini