Script php mot de passe perdu à compléter.

Résolu
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>
Configuration: Windows XP
Internet Explorer 6.0

5 réponses

  1. 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);
    
    
    1. Contributeur
      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
      1. 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>
        1. essayes avec:

          if(mysql_num_rows($requete)== 1)
          {
          $result=mysql_fetch_array($requete);
          $passmember = $result['pass']; 
          
          etc....
          
          
          1. 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>