更改用户密码php不工作

5uzkadbs  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(290)

你们能纠正代码吗,因为它不工作
这是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");
}

?>

我得到“旧密码是错误的”,即使我输入了正确的密码的用户,我认为整个事情的工作垃圾。
请帮忙谢谢。

新手

vcirk6k6

vcirk6k61#

下面是一个使用pdo连接的solluiotn:

<?php

    $user='root';
    $pass= '';
    $userid= 45;
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user , $pass);

    if(isset($_POST['update_password']))
    {
    $old_password=$_POST['old_password'];
    $new_password=$_POST['new_password'];
    $confirm_password=$_POST['confirm_password'];
    $stm=$dbh->query("select * from member where mem_id=45");
    $user= $stm->fetch(PDO::FETCH_ASSOC);
    $chg_pwd=$user['password'];

    if($chg_pwd==$old_password){
    if($new_password==$confirm_password){
        $update_password=$dbh->exec("update member set password='$new_password' where mem_id=45");
        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>

下面是所使用的注册表的模式。

更新密码后:

我希望这对你有帮助。

ep6jt1vc

ep6jt1vc2#

你犯了一些典型的初学者错误。以下是一些建议
存储纯文本密码是个坏主意。您应该在数据库中存储(salt)密码的哈希表示。
使用mysqli*-函数而不是mysql*(不推荐使用)。
从不信任用户输入。在你让他们进入你的数据库之前,你需要先逃出他们。
实现错误处理。
上面说。。。您已经在注解中指定了表结构,并且有一个名为 mem_id 但你的查询正在使用 id (具有空值)。此查询将导致mysql错误(“where子句”中的未知列“id”)。
你可以用 mysql_error() 检查这种错误。

$chg_pwd = mysql_query("select * from member where mem_id='[some_id]' ");
$error = mysql_error();

if ($error != ""){
    // you have an error in your statement
    die($error);
}

你也应该使用 mem_id 作为表中的主键

ALTER TABLE `member` ADD PRIMARY KEY( `mem_id`);

当查询按预期工作时,可以使用 var_dump ($chg_pwd1); 看看你真正从数据库中检索到什么,也许你想切换到 mysqli_fetch_row 正如您所期望的,此查询中只有一行。

相关问题