Changement de mot de passe /activation lien

Fermé
pontarose - 17 sept. 2007 à 19:00
 pontarose - 19 sept. 2007 à 10:18
Bonjour,

je désire faire en sorte que lorsqu'on aperdu un mot de passe on recoit dans notre boite mail un message avec un lien. en cliquant sur le lien l'on va activer le nouveau mot de passe et donc l'ancien mot de passe ne sera plus valide.


J'arrive a envoyer un mail et recevoir le lien dans ma boîte mail :
Mais j'ai quelque problème
1/ mon mail envoyé en HTML n'est pas interprété; les balises du code HTML apparaissent dans mon mail. Poutant j'ai bien mis
<!DOCTYPE html public "-//W3C....> au début de mon script

2/je n'arrive pas a scripter que le fait de cliquer sur le lien permet de remplacer l'ancien mot de passe par le nouveau; car d'après mon script je n'arrive pas a changer le mot de passe
En fait je ne change pas mon mot de passe

ci joint un apercu de mon script.php:

include("connexion.php");

$requete="select user_id , user_login from user where user_mail='$user_mail'";
$execution=mysql=mysql_query($requete) or die("pbe");
$rows=mysql_num_rows($execution);
if ($rows>o)
{

//GENERATION MOT DE PASSE ALEATOIRE $newpass

//ENVOIE MAIL
$adress=$mail;
$sujet='password';
$message="<html><head><title>XXX</title><head><body>Click here <a href='http:XXX.XXX.XX.XX/apache2-dafault/login.html'></a></body><html>";
$headers = "From:nom@domaine.com\n";
$headers.= "Content-type: text/html; charset= iso-8859-1\n";
$headers.= "Content Transfer-Encoding:8bit";

if (mail($adress,$sujet,$message,$headers)
{
print("the maessage was send");

if(isset($_POST['newpass'] && isset($_POST['login']))
{
$newpass=$_POST['newpass'] ;
$login=$_POST['login'] ;

$requete="select into user set user_pass='$newpass'";
$rows=mysql_affected_rows($execution);
if($rows==2)
{
print("une nvelle ligne en remplace une autre");
exit;
}
if($rows==1)
{
print("une nvelle ligne");
exit;
}
}

}
else
{
print("the maessagecould not be send");
}
A voir également:

12 réponses

pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 94
17 sept. 2007 à 20:48
slt
pour ton message, il faut mettre des \ :
$message="<html><head><title>XXX</title><head><body>Click here <a href=\"http:XXX.XXX.XX.XX/apache2-dafault/login.html\"></a></body><html>";

$requete="select into user set user_pass='$newpass'"; // Mauvaise requête
$requete="UPDATE user SET user_pass='$newpass'";
0
Bonjour,

En fait c'est bon, je reçois le mail sous format HTML mais le problème désormais est que le lien n'apparaît pas dans mon mail; à la place de celui-ci j'ai un blanc.


$message='<html>
<head>
<title>XXX</title>
</head>
<body>
Your new password is '.$newpass.'<br>
Click here <a href="http://XXX.XXX.XX.XX/apache2-default/login.html"></a>
</body>
<html>';

Le fait de mettre \ comme tu l'indiques ne change rien je n'ai toujours pas le lien qui apparaît

<a href=\"http://XXX.XXX.XX.XX/apache2-default/login.html\"></a>

Serait-on me dire pourquoi?
0
pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 94
18 sept. 2007 à 11:31
Il y a une erreur de balise :

$message='<html>
<head>
<title>XXX</title>
</head>
<body>
Your new password is '.$newpass.'<br>
Click here <a href="http://XXX.XXX.XX.XX/apache2-default/login.html"></a>
</body>
</html>';

essaie ça.
0
Bonjour,

C'est une erreur que j'ai faites en recopiant.
Ca ne marche toujours pas!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 94
18 sept. 2007 à 11:49
As-tu essayer de faire un :

echo $message;

pour vérifier la syntaxe ?
0
Quand je fais un echo $message;
j'obtiens :
Your new password is blelelejgvj
Click here
0
pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 94
18 sept. 2007 à 11:59
$message='<html>
<head>
<title>XXX</title>
</head>
<body>
Your new password is '.$newpass.'<br>
Click here <a href="http://XXX.XXX.XX.XX/apache2-default/login.html">TEST</a>
</body>
</html>';

essaie avec ce code plutot, place le pointeur de la souris sur le mot TEST et regarde le lien affiché dans la barre d'état (en bas du navigateur)
0
pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 94
18 sept. 2007 à 12:02
SI ça marche alors :

$message='<html>
<head>
<title>XXX</title>
</head>
<body>
Your new password is '.$newpass.'<br>
<a href="http://XXX.XXX.XX.XX/apache2-default/login.html">Click here</a>
</body>
</html>';
0
Un gran merci cela marche
j'ai donc :
<a href="http://XXX.XXX.XX.XX/apache2-default/login.html?newpass=$newpass&user_login='.$ligne['user_login'].'">http://XXX.XXX.XX.XX/apache2-default/login.htm?newpass=$newpass&user_login='.$ligne['user_login'].'</a>

Maintenant j'aimerais que lorsque je reçois l'e-mail, en cliquant sur le lien je puisse activer le nouveau mot de passe qui m'a été généré aléatoirement et que celui-ci soit inséré dans ma ma base de donnée a la place de l'ancien mot de passe.

Mon problème viebt du fait que je n'arrive pas a traduire le fait que cliquer sur le lien envoie les paramètre et permet l'insertion dans la base de donnée

iif (mail($adress,$sujet,$message,$headers)
{
print("the maessage was send");

if(isset($_POST['newpass'] && isset($_POST[$ligne['user_login']]))
{
$newpass=$_POST['newpass'] ;
$login=$_POST['user_login'] ;

$requete="update user set user_pass='$newpass' where user_login='$login'";
$execution=mysql_query($requete);

//blablabla

}

}
0
pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 94
18 sept. 2007 à 14:01
Ben pour commencer, tu fais une détection de POST alors que tu utilises du GET.

if (mail($adress,$sujet,$message,$headers)
{
print("the maessage was send");

if(isset($_GET))
{
extract ($_GET);
if (isset($newpass) && isset($login))
{
$requete="update user set user_pass='$newpass' where user_login='$login'";
$execution=mysql_query($requete);
}
}
}

ça me semble plus logique, non ?
0
passer par post étant plus sûr donc je peux faire:
<?php
$newpass=$_POST['newpass'] ;
$login=$_POST['user_login'] ;

if(!empty($newpass) && !empty($login))
{
include("conect.php");
$req=select user_login from user where user_login='$user_login'";
$execution=
$rows=
if($rows>0)
{
$ligne=mysql_fetch_asso($execution);

$requete= "update user set user_pass='$newpass' where user_login='$login'";
$execution=mysql_query($requete);
}
?>

mais cependant a ce moment là je ne récupère pas mes variables?
0
Bonjour,
j'aimerais que lorsque je reçois l'e-mail, en cliquant sur le lien je puisse activer le nouveau mot de passe qui m'a été généré aléatoirement et que celui-ci soit inséré dans ma ma base de donnée a la place de l'ancien mot de passe.



Voila le lien sur lequel on doit cliquer dans le mail rçu:
<a href="http://XXX.XXX.XX.XX/apache2-default/login.html?cle=$clef&user_login='.$ligne['user_login'].'">http://XXX.XXX.XX.XX/apache2-defa>ult/login.htm?clef=$clef&user_login='.$ligne['user_login'].'</a>

la valeur de $clef et $ligne['user_login'] s'affiche dans ce lien, cependant je n'arrive pas ensuite a récupérer ces valeurs. Je récupère seulement la valeur de $clef mais pas celle du login. Je ne comprend pas!

Voici mon script:
<?php

if (isset($_GET['clef']))
{
$clef=$_GET['clef'];
$user_login=$_GET[$ligne['user_login']];

print("$clef");
print("$user_login");
}
?>

Peut-on m'aider je bloque vraiment
0