Script php mot de passe perdu à compléter.

Résolu/Fermé
rankobihami Messages postés 3 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 4 janvier 2008 - 2 janv. 2008 à 20:46
rankobihami Messages postés 3 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 4 janvier 2008 - 4 janv. 2008 à 17:01
Bonjour,

Après avoir fouillé sur plein de posts, je me rend compte que le langage mysql / php peut être codé de différentes manières pour le même résultat. Et donc mon script fonctionne dans l'ensemble mais je n'arrive pas à récupérer le mot de passe dans ma BDD.
Si quelqu'un a une idée. Je met le script entier si il peut servir à d'autres webmasters. (J'ai mis la zone du script où je pense que ça bug en gras). Merci

<?php
$emailmember = $_POST['loginforpass'];
$pointemail = strpos($emailmember,".");
$arobaemail = strpos($emailmember,"@");
$error = "";
$emailadmin = "admin@site.com";

if (empty($emailmember))
{
$error="Unknow login. Please try again.";
}

elseif($pointemail=='')
{
$error="Unknow login. Please try again.";
}

elseif($arobaemail=='')
{
$error="Unknow login. Please try again.";
}

else
{

mysql_connect('sql.site.com','login','pass') OR die;

mysql_select_db('sitebdd') OR die;

$requete = mysql_query('SELECT login, pass FROM ident WHERE login="'.$emailmember.'"') OR die(mysql_error());

if(mysql_num_rows($requete)!==0)
{
$passmember = $requete['pass'];
$subjectmember = "Your personal informations";
$textmember = "Hi,

As you requested, here are your personnal informations :
Login : $emailmember
pass : $passmember

Keep your informations secret to avoid account theft, because then you won't be abble to access Site Online Training !

Have a wonderfull day ! ;)

Site.com support team.";

@mail("$emailmember", $subjectmember, $textmember, "FROM: $emailadmin");
header("location:checkyourmailforthepass.php");
}

else
{
$error="Wrong login. Please try again.";
}

}

?>

<html>
<head>
<title>Site.com</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">

<p align="center">
<b>
<span style="background-color: #FF0000;"><?php echo "$error"; ?></span>
</b>
</p>

<p align="center"><a href="forgottenpass.php">Mot de passe oublié ?</a></p>

</body>
</html>

5 réponses

Bonsoir,

une erreur là:

if(mysql_num_rows($requete)!==0)

== égal
!= pas égal

alors soit:

if(mysql_num_rows($requete)!=0)

ou

if(mysql_num_rows($requete)>0)  // mieux

ou 

if(mysql_num_rows($requete)== 1)  // encore mieux car tu ne devrait avoir qu'un login correspondant à un mail


ensuite tu ne peux pas utiliser $requete['pass'] directement

il faut faire avant :


extract($requette);

0
vlmath Messages postés 793 Date d'inscription vendredi 20 octobre 2006 Statut Contributeur Dernière intervention 4 septembre 2011 160
2 janv. 2008 à 21:15
Salut,

Il me semble qu'il manque un truc ... :
if( $data = mysql_num_rows($requete) ==1 ) 
{ 
$passmember = $data['pass']; 

......

Je j'ai pas testé, mais ça devait être comme ça ...

@Bientôt


Edit : PS: je n'avais pas vu le poste d'avant, j'était déjà en train d'écrire ... :D
0
rankobihami Messages postés 3 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 4 janvier 2008
3 janv. 2008 à 22:07
Merci de vos réponses. :)
J'ai donc modifié le script et réessayé et il manque toujours quelque chose puisque le mail est bien envoyé mais le mot de passe ($passmember) récupéré dans la BDD n'apparait pas.


En gras les modifications apportées.

Code actuel :

<?php
$emailmember = $_POST['loginforpass'];
$pointemail = strpos($emailmember,".");
$arobaemail = strpos($emailmember,"@");
$error = "";
$emailadmin = "admin@site.com";

if (empty($emailmember))
{
$error="Unknow login. Please try again.";
}

elseif($pointemail=='')
{
$error="Unknow login. Please try again.";
}

elseif($arobaemail=='')
{
$error="Unknow login. Please try again.";
}

else
{

mysql_connect('sql.site.com','login','pass') OR die;

mysql_select_db('sitebdd') OR die;

$requete = mysql_query('SELECT login, pass FROM ident WHERE login="'.$emailmember.'"') OR die(mysql_error());

if(mysql_num_rows($requete)== 1)
{
extract($requete);

$passmember = $requete['pass'];
$subjectmember = "Your personal informations";
$textmember = "Hi,

As you requested, here are your personnal informations :
Login : $emailmember
pass : $passmember

Keep your informations secret to avoid account theft, because then you won't be abble to access Site Online Training !

Have a wonderfull day ! ;)

Site.com support team.";

@mail("$emailmember", $subjectmember, $textmember, "FROM: $emailadmin");
header("location:checkyourmailforthepass.php");
}

else
{
$error="Wrong login. Please try again.";
}

}

?>

<html>
<head>
<title>Site.com</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">

<p align="center">
<b>
<span style="background-color: #FF0000;"><?php echo "$error"; ?></span>
</b>
</p>

<p align="center"><a href="forgottenpass.php">Mot de passe oublié ?</a></p>

</body>
</html>
0
essayes avec:

if(mysql_num_rows($requete)== 1)
{
$result=mysql_fetch_array($requete);
$passmember = $result['pass']; 

etc....

0

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

Posez votre question
rankobihami Messages postés 3 Date d'inscription mercredi 2 janvier 2008 Statut Membre Dernière intervention 4 janvier 2008
4 janv. 2008 à 17:01
Merci alain42 ! Effectivement il manquait le mysql_fetch_array($requete);
Le script fonctionne maintenant.

Code OK :


<?php
$emailmember = $_POST['loginforpass'];
$pointemail = strpos($emailmember,".");
$arobaemail = strpos($emailmember,"@");
$error = "";
$emailadmin = "admin@site.com";

if (empty($emailmember))
{
$error="Unknow login. Please try again.";
}

elseif($pointemail=='')
{
$error="Unknow login. Please try again.";
}

elseif($arobaemail=='')
{
$error="Unknow login. Please try again.";
}

else
{

mysql_connect('sql.site.com','login','pass') OR die;

mysql_select_db('sitebdd') OR die;

$requete = mysql_query('SELECT login, pass FROM ident WHERE login="'.$emailmember.'"') OR die(mysql_error());

if(mysql_num_rows($requete)== 1)
{
$result=mysql_fetch_array($requete);
$passmember = $result['pass'];
$subjectmember = "Your personal informations";
$textmember = "Hi,

As you requested, here are your personnal informations :
Login : $emailmember
pass : $passmember

Keep your informations secret to avoid account theft, because then you won't be abble to access Site.com !

Have a wonderfull day ! ;)

Site.com support team.";

@mail("$emailmember", $subjectmember, $textmember, "FROM: $emailadmin");
header("location:checkyourmailforthepass.php");
}

else
{
$error="Wrong login. Please try again.";
}

}

?>

<html>
<head>
<title>Site.com</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">

<p align="center">
<b>
<span style="background-color: #FF0000;"><?php echo "$error"; ?></span>
</b>
</p>

<p align="center"><a href="forgottenpass.php">Mot de passe oublié ?</a></p>

</body>
</html>
0