0

データベースのパスワードを変更するフォームを実装しようとしましたが、フォームの詳細を送信すると、目的のページに移動するだけですが、ブラウザーに平文コードが表示されます... .なぜこれをしているのですか!

フォーム:

    <h1 align="center">Change Password</h1>

            <form method="POST" action="reset_pwd.php">
                <table class='altrowstable' id='alternatecolor' >
                    <tr>
                        <td align="right">Username: </td>
                        <td><input type="TEXT" name="username" value=""/></td>
                    </tr>
                    <tr>
                        <td align="right">Current Password: </td>
                        <td><input type="password" name="password" value=""/></td>
                    </tr>
                    <tr>
                        <td align="right">New Password: </td>
                        <td><input type="password" name="npassword" value=""/></td>
                    </tr>
                    <tr>
                        <td align="right">Repeat New Password: </td>
                        <td><input type="password" name="rpassword" value=""/></td>
                    </tr>
                    <tr><td align="center">
                        <a href="forgot_password.php">Forgot password</a>
                        </td>
                   <td>
                        <input type="submit" name="submit" value="Change Password"/>
                        </td>
                    </tr>
                </table>

            </form>
        <br>
 <?php echo $msg; ?>

およびターゲットのphpページ:

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


$msg = "";


if (mysql_real_escape_string($_POST['submit'])):


    $username = mysql_real_escape_string($_POST['username']);
    $password = mysql_real_escape_string(md5($_POST['password']));
    $npassword = mysql_real_escape_string(md5($_POST['npassword']));
    $rpassword = mysql_real_escape_string(md5($_POST['rpassword']));





    $sql = "SELECT * FROM user_info WHERE user_id = '$username' ";
    $query = mysql_query($sql);
    $numrows = mysql_num_rows($query);


    while ($rows = mysql_fetch_array($query)):

        $dbusername = $rows['username'];
        $dbpassword = $rows['password'];
        $dbfirstname = $rows ['firstname'];
        $dblastname = $rows ['lastname'];

    endwhile;


    if (empty($username) || empty($password) || empty($npassword) || 
    empty($rpassword)):

        $msg = "All fields are required";

    elseif ($numrows == 0):

        $msg = "This username does not exist";

    elseif ($password != $dbpassword):

        $msg = "The CURRENT password you entered is incorrect.";

    elseif ($npassword != $rpassword):

        $msg = "Your new passwords do not match";

    elseif ($npassword == $password):

        $msg = "Your new password cannot match your old password";

    else:


        mysql_query("UPDATE user_info SET password = '$npassword' WHERE user_id = 
         '$username'");

        $to = $email;

        $subject = "YOUR PASSWORD HAS BEEN CHANGED";

        $message = "<p>Hello $dbfirstname $dblastname. You've received this E-Mail
        because you have requested a PASSWORD CHANGE. ";

        $from = "myemail@.com";

        $headers = "From: $from";


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

        endif;
  endif;

 ?>
4

4 に答える 4

0

インクルードファイル「dbconfig.php」の最後にある余分な?>を忘れた可能性があるため、ターゲットのphpページをhtmlとして扱います。

于 2013-03-20T11:53:58.020 に答える
0

確認してください...「user_info」テーブルの「user_id」のタイプは何ですか...そして、フォームからユーザー名フィールドに何を取得していますか。

このクエリについて質問しています...

$sql = "SELECT * FROM user_info WHERE user_id = '$username' ";
于 2013-03-20T11:49:28.030 に答える
0

ターゲット php の最初の $msg はターゲット php のみを対象としており、フォームに値を返しません。

次に、if (mysql_real_escape_string($_POST['submit'])) の代わりに if (isset($_POST['submit'])): を探すことができます。

于 2013-03-20T11:51:24.307 に答える
0

ブラウザに表示する対象ページからのhtmlレスポンスがありません。コンテンツを表示するには、ブラウザで表示できるように適切な html を作成する必要があります。

ターゲット ページの最後に以下の html コードを追加して、メッセージ (検証または成功) を表示できるようにします。

<html><body>put your message here</body></htm>
于 2013-03-20T11:45:13.693 に答える