我试图创建一个html表单来更改php中的密码。我的数据库是用easyphp创建的。
这是我为更改密码而写的代码,当我测试它时,没有发生或更改任何事情。
<?
$user_name = "root";
$pass_word = "";
$database = "login";
$server = "127.0.0.1";
if(isset($_POST['submit']))
{
$oldpassword = md5($_POST['cur_password']);
$newpassword= md5($_POST['new_password']);
$confirm_password = md5($_POST['confirm_password']);
$usermane = $_SESSION['username'];
$con = mysqli_connect($server, $user_name, $pass_word,$database);
if (!$con)
{
die('Could not connect: ' . mysqli_connect_error());
}
$select=mysqli_query("select * from login where L1='$username'");
$fetch=mysqli_fetch_array($select);
$data_password=md5($fetch['password']);
if($newpassword==$confirm_password && $data_password==$oldpassword)
{
$insert=mysqli_query("update login set L2='$confirm_password' where L1='$username'");
}
if($insert)
{
echo "Password changed";
}
else
{
echo "Password not changed";
}
}
}
mysqli_close($con);
?>
<html>
<head>
</head>
<body>
<FORM NAME ="form1" METHOD ="POST" ACTION ="changepassword.php">
<p>old password<br />
<input type="password" name="current_password" /></p>
<p>New password<br />
<input type="password" name="new_password"/>
</p>
<p>Confirm password<br />
<input type="password" name="confirm_password"/>
</p>
<input name="submit" type="submit" value="Save Password" />
</body>
</html>
请告诉我这里出了什么问题。
感谢:D
$usermane
第12行。看起来像是语法错误。你不应该有任何错误吗?
用户名称和用户名也不匹配
$usermane = $_SESSION['username'];
$select=mysqli_query("select * from login where L1='$username'");
更改
$data_password=md5($fetch['password']);
至
$data_password=$fetch['password'];
您已经将密码存储为散列(至少根据insert语句),当您获取散列的散列时,您只会得到一个新的散列。
导致$data_password不等于$oldpassword
if($newpassword==$confirm_password && $data_password==$oldpassword)
{
$insert=mysqli_query("update login set L2='$confirm_password' where L1='$username'");
}
正如Eisa Adil指出的那样
$usermane
应该是
$username