[英]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.