【问题标题】:User Password Reset Function用户密码重置功能
【发布时间】:2020-07-05 11:31:18
【问题描述】:

我正在尝试在 php 网站上实现更改密码功能。这个想法是,详细信息存储在数据库中的注册会员可以通过输入旧密码然后输入两次新密码来更改密码。完成后,他们单击更改密码。但是,当单击它时,它会在屏幕上显示“查询不起作用”,这让我认为数据库连接下的“$query”有问题。谁能帮我这个?

 <?php

 session_start();


 $user = $_SESSION['dohare11'];

if ($user)
{
    if ($_POST['submit'])
{
 //check fields


    $oldpassword = md5($_POST['oldpassword']);
    $newpassword = md5($_POST['newpassword']);
    $repeatnewpassword = md5($_POST['repeatnewpassword']);
          //check password against db
    include("../connection/conn.php");

    $query = "SELECT password FROM cityfestusers WHERE username='$user'";
    mysqli_query($conn, $query) or die("Query didn't work");
    $row = mysqli_fetch_assoc($query);

    $oldpassworddb = $row['password'];


    //check passwords
    if ($oldpassword == $oldpassworddb) {
        //check new passwords
        if ($newpassword == $repeatnewpassword) {
            //success
            //change password in db
            $change = "UPDATE cityfestusers SET password='$newpassword' WHERE username='$user'";
            mysqli_query($conn, $change);
            session_destroy();
            die("Your password has been changed. <a href='index.php'>Return</a> to the main menu");

          } else {
            die("New passwords don't match");
           }
         } else {
              die("Old password doesnt match!");
           }
      }        
   else
    {


    }
    echo"

     <form action='changepassword.php' method='POST'>
     Old Password: <input type='text' name='oldpassword'><p>
     New Password: <input type='password' name='newpassword'><br>
     Repeat New Password: <input type='password' name='repeatnewpassword'><br>
     <input type='submit' name='submit' value='Change Password'>
     </form>
              ";
          }

编辑/// 我已将查询语句更新为以下内容并收到错误:'mysqli_fetch_assoc() 期望参数 1 为 mysqli_result,bool 在...第 23 行中给出 ($row = mysqli_fetch_assoc($result);) 旧密码不匹配' 这是我引用查询语句的更新代码

    $query = "SELECT password FROM cityfestusers WHERE username='$user'";
    $result = mysqli_query($conn, $query);
    $row = mysqli_fetch_assoc($result);

    $oldpassworddb = $row['password'];

...

    //check passwords
    if ($oldpassword == $oldpassworddb) {
        //check new passwords
        if ($newpassword == $repeatnewpassword) {
            //success
            //change password in db
            $update = "UPDATE cityfestusers SET password='$newpassword' WHERE username='$user'";
           $result = mysqli_query($conn, $update);
           $row = mysqli_fetch_assoc($result);
            session_destroy();
            die("Your password has been changed. <a href='index.php'>Return</a> to the main menu");

        } else {
            die("New passwords don't match");
        }
    } else {
        die("Old password doesnt match!");
    }
}        

否则 {

【问题讨论】:

标签: php html mysql select passwords


【解决方案1】:

根据documentationmysqli_query后需要存储result

$result = mysqli_query($conn, $query);

如果有数据,应该使用resultant object 进行任何进一步的魔法。阅读此文档并执行有关它的每个步骤。

另外,是的,您的查询失败了:

echo 'Start with true'.PHP_EOL;

(true) or die('message1');

echo 'Start with false'.PHP_EOL;

(false) or die('message2');

给予:

Start with true
Start with false
message2

【讨论】:

  • 您还应该添加 $row = mysqli_fetch_assoc($result);
猜你喜欢
  • 2019-06-04
  • 2013-05-17
  • 1970-01-01
  • 2021-03-24
  • 2013-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-04
相关资源
最近更新 更多