2 回答

TA貢獻1852條經(jīng)驗 獲得超1個贊
我相信你想檢查單個用戶。
“我想檢查用戶登錄條目數(shù)據(jù)以查找它們是否存在?!?nbsp;- 好吧,我不熟悉您的應(yīng)用程序邏輯,但要檢查是否存在某些用戶,您只需從 db 中獲取一些參數(shù)。如果存在則獲取單個用戶,否則獲取空行。對?
“我知道如果我想用數(shù)據(jù)庫中的數(shù)據(jù)檢查用戶登錄條目數(shù)據(jù),我應(yīng)該使用 while 循環(huán)?!?nbsp;- 如何?誰告訴你的。如果您獲取其中的許多并對數(shù)據(jù)做一些事情,例如,您需要這樣的循環(huán)。列出他們?
如果您確實有某些情況,您必須獲取所有用戶并檢查您上面在代碼中編寫的內(nèi)容,請不要重定向到那里,請將一些數(shù)據(jù)保存在數(shù)組中,例如 $array['passed'] 和 $array['failed'] 然后如果需要,編寫另一個邏輯來重定向。
顯然,在循環(huán)內(nèi)多次重定向是不可能的。

TA貢獻1803條經(jīng)驗 獲得超6個贊
$select_query = "select `username`,`pass` from `register`"; // Fetching ALL user accounts from register table
$result= $db_connection->query($select_query); // Execute query
// Loop through all rows of query
while($row= $result->fetch_assoc()){
// If username and password matches the user's input, then set HTTP Response header to do a 302 Redirect to ../account.php
if($row["username"] === $username && $row["pass"] === $pass){
header("location:../account.php");
}
// If username and password doesn't match the user's input, then set HTTP Response header to do a 302 Redirect to ../login.php
else{
header("location:../login.php");
}
}
該代碼有一個邏輯錯誤,讓我們假設(shè)您的“注冊表”是這樣的:
username | pass
--------------------------
user1 | password1
user2 | password2
user3 | password3
user4 | password4
如果用戶輸入正確 $username="user3" $pass="password3" ,代碼仍然會輸出 header("location:../login.php") 因為它是從第一行一直循環(huán)到最后表(即當循環(huán)到達最后一行“user4”時,它將處理“else”語句)。
最好將您的代碼更新為這樣的內(nèi)容(假設(shè)您使用的是 php mysqli 類):
session_start();
$select_query = " select `pass` from `register` where `username` = '".$db_connection->real_escape_string($username)."' ";
$result = $db_connection->query($select_query); // Execute query
$redirectPage = '../login.php';
if( $result->num_rows == 1 ) {
$dbPass = $result->fetch_object();
if( $pass == $dbPass->pass ) {
$redirectPage = '../account.php';
$_SESSION['loginSuccess'] = true; // This let's account.php know that the user is properly authenticated
}
}
header('Location: '.$redirectPage);
- 2 回答
- 0 關(guān)注
- 121 瀏覽
添加回答
舉報