-1

私は今それを持っているので、どのユーザーも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>";

/Eメール

          $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);
4

1 に答える 1

3

まず、passwordResetKeyなどの別の列をデータベースに追加する必要があります。ユーザーが「パスワードを忘れた」ときに電子メールを入力した場合、パスワードを変更せずに、passwordResetKeyをランダムに生成された値として設定します。メールアドレスに、リセットページへのリンクをメールアドレスにメールで送信します。メールアドレスとキーはforgot.php?email = example @ example.org&key=hsdf39SDなどです。

ユーザーがパスワードを変更したら、forgotPasswordKeyフィールドをnullにリセットします。

また、パスワードリセットキーが24時間程度のみ有効になるように、日付フィールドを追加することもできます。

于 2012-06-10T23:06:41.260 に答える