Php 更新密码不起作用
我目前正在处理一个PHP文件,这是一个管理员,有权更新用户帐户的密码,该密码包含散列,但它目前不工作,并且在数据库中更新。我试图寻找问题,但没有这样做,一点帮助将不胜感激。这是我的简单代码 edit-accounts-process.php:Php 更新密码不起作用,php,html,mysql,sql,Php,Html,Mysql,Sql,我目前正在处理一个PHP文件,这是一个管理员,有权更新用户帐户的密码,该密码包含散列,但它目前不工作,并且在数据库中更新。我试图寻找问题,但没有这样做,一点帮助将不胜感激。这是我的简单代码 edit-accounts-process.php: <?php $connect=mysqli_connect('localhost','root','','report_generation'); if(isset($_POST['submit'])) { $id = $_POST
<?php
$connect=mysqli_connect('localhost','root','','report_generation');
if(isset($_POST['submit'])) {
$id = $_POST['id'];
$username = $_POST['username'];
$password= $_POST['password'];
$login_name = $_POST['login_name']; //full name of the user
$query = "UPDATE dim_login set username = '$username', password = md5('$password'), login_name = '$login_name', where id = '$id'";
mysqli_query($connect, $query);
header( "Location: user-account.php" ); die;
echo "<script>window.open('user-account.php','_self')</script>";
} ?>
请使用更新的功能创建密码,这样更安全、更好
login\u name='$login\u name',
<删除WHERE
之前的最后一个逗号,首先,如果使用sql检查器测试查询,您将得到一个错误。(此处示例:)
结果查询在where子句之前有一个逗号
"UPDATE dim_login set username = 'xxx', password = md5('xxx'), login_name = 'xxx', where id = '1'"
这是正确的
"UPDATE dim_login set username = 'xxx', password = md5('xxx'), login_name = 'xxx' where id = '1'"
其次,您确定必须将id
字段视为字符串吗
第三,检查是否设置($\u POST['submit'])
的目的是什么 此外,我强烈建议对用户输入进行一些转义,为了防止SQL注入,必须使用mysqli\u real\u escape\u string
。为了解决这个问题,我已经找了好几个小时了!非常感谢你帮我注意到这个简单的错误@GrowingBrick是的,这也是!:)我会的,现在这是一个简单的脚本。谢谢你们两位的帮助。顺便说一句,请参阅和等。SQL注入和MD5哈希?你真的在为所有的坏习惯打勾。
"UPDATE dim_login set username = 'xxx', password = md5('xxx'), login_name = 'xxx' where id = '1'"