【发布时间】:2021-02-09 00:56:48
【问题描述】:
我刚刚做了一个“更改密码”页面,但它并没有更新数据库中的密码
不管我输入什么,它总是说“密码已更改”
提前感谢您的帮助
问候西蒙
<?php
require_once 'header.php';
session_start();
$con = mysqli_connect('localhost','robinsnest','robinsnest') or die('Unable To connect');
if(count($_POST)>0) {
$result = mysqli_query($con,"SELECT *from members WHERE user='" . $_SESSION["$user"] . "'");
$row=mysqli_fetch_array($result);
if($_POST["currentPass"] == $row["pass"] && $_POST["newPass"] == $row["confirmPass"] ) {
mysqli_query($con,"UPDATE members set pass='" . $_POST["newPass"] . "' WHERE user='" . $_SESSION["$user"] . "'");
$message = "Password Changed Sucessfully";
} else{
$message = "Password is not correct";
}
}
?>
<html>
<div><?php if(isset($message)) { echo $message; } ?></div>
<form method="post" action=""
Current Password:<br>
<input type="password" name="currentPassword"><span id="currentPass" class="required"></span>
<br>
New Password:<br>
<input type="password" name="newPassword"><span id="newPass" class="required"></span>
<br>
Confirm Password:<br>
<input type="password" name="confirmPassword"><span id="confirmPass" class="required"></span>
<br><br>
<input type="submit" value ="Change Password">
</form>
<br>
<br>
</html>
【问题讨论】:
-
如果需要,我有一个带有表、用户和密码的数据库
-
您似乎以纯文本形式存储密码,所以我先看看
password_hash()和password_verify()。 -
您的表单字段名称也与您在
$_POST中用于处理数据的名称不匹配。您可以使用var_dump()自行调试。 -
你也很容易受到 SQL 注入的攻击
-
老实说,这里有很多错误。您存储的是纯文本密码,而不是使用 PHP 的内置密码散列功能,您对 SQL 注入持开放态度,这意味着您的 SQL 代码可能是任何东西,并且您没有检查错误执行数据库查询后。不管 PHP 教程教了你什么,放弃它并找到其他的。