你们能纠正代码吗,因为它不工作
这是update.php
//included session.php at the top
<?php
$conn_db = mysql_connect("localhost","root","") or die();
$sel_db = mysql_select_db("registration",$conn_db) or die();
if(isset($_POST['update_password']))
{
$old_password=$_POST['old_password'];
$new_password=$_POST['new_password'];
$confirm_password=$_POST['confirm_password'];
$chg_pwd=mysql_query("select * from member where id=''");
$chg_pwd1=mysql_fetch_array($chg_pwd);
$data_pwd=$chg_pwd1['password'];
if($data_pwd==$old_password){
if($new_password==$confirm_password){
$update_password=mysql_query("update member set password='$new_password' where id=''");
echo "<script>alert('Update Sucessfully'); window.location='update.php'</script>";
}
else{
echo "<script>alert('Your new and Retype Password is not match'); window.location='update.php'</script>";
}
}
else
{
echo "<script>alert('Your old password is wrong'); window.location='update.php'</script>";
}}
?>
<form action="" method="POST">
<fieldset>
<input value="" type="password" id="old_password" name="old_password" placeholder="Current Password" required>
<input value="" type="password" id="new_password" name="new_password" placeholder="New Password" required>
<input value="" type="password" id="confirm_password" name="confirm_password" placeholder="Confirm Password" required>
</fieldset>
<button id="st" name="update_password" type="submit"><span>Update</span></button>
</form>
这是session.php,用于添加信息
<?php
session_start();
include('db.php');
$user_check=$_SESSION['login_user'];
$ses_sql=mysqli_query($db,"select username,mem_id from member where
username='$user_check' ");
$row=mysqli_fetch_array($ses_sql,MYSQLI_ASSOC);
$loggedin_session=$row['username'];
$loggedin_id=$row['mem_id'];
if(!isset($loggedin_session) || $loggedin_session==NULL)
{
echo "Go back";
header("Location: login.php");
}
?>
我得到“旧密码是错误的”,即使我输入了正确的密码的用户,我认为整个事情的工作垃圾。
请帮忙谢谢。
2条答案
按热度按时间vcirk6k61#
下面是一个使用pdo连接的solluiotn:
下面是所使用的注册表的模式。
更新密码后:
我希望这对你有帮助。
ep6jt1vc2#
你犯了一些典型的初学者错误。以下是一些建议
存储纯文本密码是个坏主意。您应该在数据库中存储(salt)密码的哈希表示。
使用mysqli*-函数而不是mysql*(不推荐使用)。
从不信任用户输入。在你让他们进入你的数据库之前,你需要先逃出他们。
实现错误处理。
上面说。。。您已经在注解中指定了表结构,并且有一个名为
mem_id
但你的查询正在使用id
(具有空值)。此查询将导致mysql错误(“where子句”中的未知列“id”)。你可以用
mysql_error()
检查这种错误。你也应该使用
mem_id
作为表中的主键当查询按预期工作时,可以使用
var_dump ($chg_pwd1);
看看你真正从数据库中检索到什么,也许你想切换到mysqli_fetch_row
正如您所期望的,此查询中只有一行。