2

私の Web サイトには、ユーザーがパスワードを変更できるページがあります。

フォームは、ユーザー名、現在のパスワード、新しいパスワード、新しいパスワードの確認を求めます。

ユーザーが間違ったユーザー名を入力した場合、フォームはパスワードを変更しません。

ただし、ユーザーが間違ったパスワードを入力すると、フォームはとにかくパスワードを変更します。

私のコードは以下に貼り付けられています。誰かが助けてくれれば、感謝します! ありがとう!

ヨースト

パスワード情報変更画面:

<div id="inlogscherm">
    <form name="form1" method="post" action="changepw.php">
        <div class="textm">Change password</div><br>
        <div class="text">Username:</div><div class="invulbalkje"><? echo "{$_SESSION['myusername']}"; ?></div><br />
        <input name="username" type="hidden" id="username" value="<? echo "{$_SESSION['myusername']}"; ?>">
        <div class="text">Password:</div><input name="npassword" type="password" id="npassword" class="invulbalkje"><br />
        <div class="text">New Password:</div><input name="newpassword" type="password" id="newpassword" class="invulbalkje"><br />
        <div class="text">Repeat New Password:</div><input name="repeatnewpassword" type="password" id="repeatnewpassword" class="invulbalkje"><br />
        <input type="submit" name="Submit" value="Change" class="button">
    </form>
</div>

これが変更用のphpです。(changepw.php)

    <?php 
session_start();

$host="localhost";

$username=",";

$password=","; 

$db_name=","; 

$tbl_name=",";

mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$username = $_POST['username'];
$password = $_POST['password'];
$newpassword = $_POST['newpassword'];
$repeatnewpassword = $_POST['repeatnewpassword'];

$encrypted_password=md5($password);
$encrypted_newpassword=md5($newpassword);

$result = mysql_query("SELECT password FROM $tbl_name WHERE username='$username' and password = '$encrypted_password'");

if(!$result) 
{ 
    header("location:error1.php"); 
} 
if(mysql_num_rows($result)){
    if($newpassword==$repeatnewpassword){
        $sql=mysql_query("UPDATE $tbl_name SET password='$encrypted_newpassword' where username='$username'");        
        if($sql) 
        { 
                header("location:success.php");
        }
        else
        {

           header("location:error3.php");
        }       
    } else {

        header("location:error_password_not_matched.php");
    }
} else {

    header("location:error.php"); 
}
?> 

問題が発生した場合は、私に連絡してください。とても感謝しています!

4

1 に答える 1

4

私が見つけたように、ここに1つのエラーがあります。

それだけです, フォームではnpassword, パスワードフィールドに名前を使用しており、$password = $_POST['password'];ここで見られるように名前パスワードで取得しています.

したがって、次のコードを変更するだけです。

$password = $_POST['password'];

$password = $_POST['npassword'];

そして、これはうまくいきます。

于 2013-05-03T09:14:22.577 に答える