第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我不明白下面的代碼如何繼續(xù)循環(huán)遍歷數(shù)據(jù)庫中的項目?

我不明白下面的代碼如何繼續(xù)循環(huán)遍歷數(shù)據(jù)庫中的項目?

PHP
炎炎設(shè)計 2022-05-27 10:03:51
我想檢查用戶登錄條目數(shù)據(jù)以查找它們是否存在。假設(shè)我們在數(shù)據(jù)庫中只有 10 條記錄(10 個用戶)。我知道如果我想用數(shù)據(jù)庫中的數(shù)據(jù)檢查用戶登錄條目數(shù)據(jù),我應(yīng)該使用 while 循環(huán)。正如您在下面的代碼中看到的,我使用 while 循環(huán)和 fetch_assoc 方法從數(shù)據(jù)庫中獲取每條記錄。下面的代碼工作正確!但我無法理解循環(huán)內(nèi)“ if語句”的工作流程。取數(shù)據(jù)庫中的第一條記錄。fetch_assoc 方法從數(shù)據(jù)庫中獲取第一條記錄以檢查它與用戶條目數(shù)據(jù)。然后“if語句”檢查用戶數(shù)據(jù)和獲取的數(shù)據(jù)。讓我感到困惑的是,如果數(shù)據(jù)與第一條記錄不匹配,則 else 語句必須將用戶返回到登錄頁面。我的意思是只檢查了一行!- 它如何使用用戶輸入數(shù)據(jù)檢查其他記錄!- 它如何從 else 語句跳轉(zhuǎn)到 while 循環(huán)?。磕芊裨敿毥忉屨麄€代碼。    $select_query= "select `username`,`pass` from `register`";    $result= $db_connection->query($select_query);        while($row= $result->fetch_assoc()){            if($row["username"] === $username && $row["pass"] === $pass){                header("location:../account.php");            }else{                header("location:../login.php");            }        }
查看完整描述

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)多次重定向是不可能的。


查看完整回答
反對 回復(fù) 2022-05-27
?
慕碼人8056858

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);


查看完整回答
反對 回復(fù) 2022-05-27
  • 2 回答
  • 0 關(guān)注
  • 121 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號