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

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