-4

我正在尝试编写一个简单的脚本,通过验证他/她的电子邮件是什么来告诉用户他的密码。但是我不知道在用户输入电子邮件地址后如何向用户显示忘记的密码。

这是我想要做的脚本:

<html>
<body>

<form action="forgottenpassword.php" method="post">
Enter Your email: <input type="text" name="email"/>
<input type="submit" name="submit" value="Retrieve password"/>
</form>

</body>
</html>

<?php
include('config.php');

if (isset ($_POST['submit'])) {

$emailcheck = $_POST['email'];

$checkit = mysql_query("SELECT email FROM user WHERE email ='$emailcheck'"); 

if (!$checkit) exit(); 

$result = mysql_fetch_array($checkit);
$question = $result['email'];
echo "Your password is $question";
}
?>
4

2 回答 2

2

这是密码重置的简单算法:

  1. 必须将加密和散列的密码存储到数据库中。关注更多信息这个
  2. 您应该创建一个列(例如:reset_password_hash),当用户输入他的电子邮件时,您会生成一个随机散列字符串并更新该列。
  3. 通过电子邮件向用户发送一个包含该列(使用GET方法)的散列字符串的 url,例如:

    http://www.mysite.com/?uid=232&hash=4mnb2m3n4bkj23jh2h4j23kj4kj

  4. 然后,当用户访问该 url 时,您检查用户的哈希字符串,如果它存在,那么您为他提供重置密码的机会(看不到它),因为您对密码进行了哈希处理并且它是不可逆的。

于 2013-05-16T21:11:39.443 回答
1

一旦密码进入数据库,你不应该让用户看到他们的密码,因为它应该被加密。这里有一些代码可以帮助你做你想做的事。

HTML

<div id="displayPass"></div>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
   <label>Enter Your email: </label><input type="text" name="email"/>
   <input type="submit" name="submit" value="Retrieve password"/>
</form>

PHP(应该放在头部)

<?php
  include('config.php');

  if (isset($_POST['submit'])) {
     $emailcheck = $_POST['email'];

     $checkit = mysql_query("SELECT password FROM user WHERE email ='$emailcheck'"); 

    if (empty($checkit))
    {
    echo "<script type='text/javascript'>
            var div = document.getElementById('displayPass');
            div.innerHTML = 'You have entered the incorrect email.';
          </script>"; 
    }
    else
    {
    $result = mysql_fetch_array($checkit);
    $question = $result['email'];

    echo "<script type='text/javascript'>
            var div = document.getElementById('displayPass');
            div.innerHTML = 'Your password is '".$question."';
          </script>";     
    }
  }
?>

但是你应该是这样的......

HTML(带有一些 php)

   <?php
      session_start();
   <form action="checkEmail.php" method="post">
      <label>Enter Your email: </label><input type="text" name="email"/>
      <input type="submit" name="submit" value="Retrieve password"/>
      <label><?php echo $_SESSION["errorMessage"]; ?></label>
   </form>
   ?>

PHP (checkEmail.php)

<?php
  session_start();
  //query database to see if its a correct email address
  if(//email is not corrent){
    $_SESSION["errorMessage"] = "Invalid Email.";
    header("Location: emailForm.php");
  }
  else {
     header("Location: newPasswordForm.php");
  }
?>

然后您创建一个新页面,用户可以在其中填写表单以更改其密码。

希望这可以帮助。

于 2013-05-16T21:15:13.810 回答