忘了密码临时页面php

时间:2012-06-10 22:22:36

标签: php

正如我现在所做的那样,任何用户都可以在forgot.php页面上输入电子邮件,如果电子邮件存在,分配给该电子邮件密码的用户将被更改。我如何更改我的代码,以便它发送一个指向用户电子邮件的链接,该链接指向他们更改密码的临时页面。我知道如何更改密码脚本,但如何创建临时页面的链接?

forgot.php

echo "<div id='sign-parent-container'>
        <div class='form-title'>Forgotten Username/Password</div>
            <form action='/login' action='post' id='forgot-form'>
                <ul>
                <li>Type the email address you registered with, a link to a temporary page where you can change your password will be sent.</li>
                <li>
                    <ul>
                        <li><input type='text' name='email' value='Type Registered Email Here' class='signupfield-2' /><li>
                        <li style='display:none;'><span class='error'>This email doesn't exist</span></li>
                    </ul>
                </li>

                <li class='form-submit' data-type='forgot'><a>Request Password Change</a>
                <input type='hidden' name='forgot' value='1' /></li>
                </ul>
            </form>
        </div>";

/电子邮件

          $to = $email;
          $subject = "example - New Password Request.";
          $headers = "From: example.com";
          $server = "http://www.example.com";

          ini_set("SMTP",$server);
          $body="


          Hello $username,\r\r

          Your login details are below;\r\r


          Click the link below to change password:\r
          http://www.exmaple.com/temporarylink
           \n\n



          ";
          //function to send email


          mail($to, $subject, $body, $headers);

1 个答案:

答案 0 :(得分:3)

首先,您需要在数据库中添加另一列,例如passwordResetKey 当用户“忘记密码”并输入他们的电子邮件时,请不要更改密码,将passwordResetKey设置为随机生成的值。 通过电子邮件地址和密钥通过电子邮件地址发送重置页面的链接 例如forgot.php?email=example@example.org& key = hsdf39SD

用户更改密码后,将forgotPasswordKey字段重置为null。

您可能还想添加日期字段,以便密码重置密钥仅在24小时左右有效。