1

ここに新しいので、私に気楽に行ってください。この単純な php ページを使用すると、ユーザー名とパスワードを入力できます。問題は、リセットできないように見えることです。基本的な背景として、データベースは My_Details と呼ばれ、テーブルは My_DetailsData と呼ばれます。これはフォーム自体です:

<form action="reset.php" method="post">
<p align="center">Type in below, your Username, Password and New Password to reset your       login id.</p>
<table id="form_pword_reset">
<tr><td>Username</td><td>: <input type="text" name="USERNAME" /></td></tr>
<tr><td>Password</td><td>: <input type="password" name="PASSWORD_HASH" /></td></tr>
<tr><td>New Password</td><td>: <input type="password" name="PASSWORD_RESET" /></td></tr>
<tr><td></td><td> <input type="submit" value="Reset Password" /></td></tr>
</table>
</form>

ページ上のreset.phpというphpページにリンクしています。htmlページでパスワードを変更しても、データベーステーブルはまったく影響を受けないことを除いて、すべて正常に動作します...

$db_select=mysql_select_db("My_Details",$conn) or die(mysql_error());

//Retrieving data from html form
$username = $_POST['USERNAME'];

$password = $_POST['PASSWORD_HASH'];

$password_reset = $_POST['PASSWORD_RESET'];

//for mysql injection (security reasons)

$username = mysql_real_escape_string($username);

$password = mysql_real_escape_string($password);

$password_reset = mysql_real_escape_string($password_reset);

$login = mysql_query("select*from My_DetailsData where USERNAME='$username' and  PASSWORD_HASH='$password'");

if(mysql_num_rows($login)== 1){
mysql_query($conn, "UPDATE My_DetailsData SET PASSWORD_HASH=$password_reset WHERE       USERNAME='$username' AND PASSWORD_HASH='$password'");

echo "Password Changed Successfully";


}
else{
echo "Incorrect Username or Password!";
}
mysql_close($conn);
4

6 に答える 6

0

SET column='{value}' の引用符を見逃したようです

 <?php
$conn = mysql_connect('localhost','root','');
$db_select=mysql_select_db("My_Details",$conn) or die(mysql_error());

//Retrieving data from html form
$username = $_POST['USERNAME'];

$password = $_POST['PASSWORD_HASH'];

$password_reset = $_POST['PASSWORD_RESET'];

//for mysql injection (security reasons)

$username = mysql_real_escape_string($username);

$password = mysql_real_escape_string($password);

$password_reset = mysql_real_escape_string($password_reset);

$login = mysql_query("select * from My_DetailsData where USERNAME='$username' and  PASSWORD_HASH='$password'");

if(mysql_num_rows($login)== 1){
mysql_query($conn, "UPDATE My_DetailsData SET PASSWORD_HASH=$password_reset WHERE       USERNAME='$username' AND PASSWORD_HASH='$password'");
echo "UPDATE My_DetailsData SET 'PASSWORD_HASH`='$password_reset' WHERE       USERNAME='$username' AND PASSWORD_HASH='$password'";
echo "Password Changed Successfully";


}
else{
echo "Incorrect Username or Password!";
}
mysql_close($conn);
于 2013-10-07T09:20:21.773 に答える
0

スペースを追加してください:

から:

$login = mysql_query("select*from My_DetailsData where USERNAME='$username' and  PASSWORD_HASH='$password'");

に:

$login = mysql_query("select * from My_DetailsData where USERNAME='$username' and  PASSWORD_HASH='$password'");
于 2013-10-07T09:03:13.147 に答える
-1

これを試して:

UPDATE My_DetailsData SET PASSWORD_HASH='$password_reset' WHERE USERNAME='$username' AND PASSWORD_HASH='$password'
                                        ^missing quotes ^
于 2013-10-07T09:05:01.257 に答える