簡體   English   中英

用戶密碼重置功能

[英]User Password Reset Function

我正在嘗試在 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!");
    }
}        

別的 {

根據文檔,您需要在執行mysqli_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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM