簡體   English   中英

為什么這個變量總是返回true?

[英]Why does this variable always return true?

我正在嘗試編寫一個登錄腳本。 登錄后,會設置會話變量,並在主頁面上運行isLoggedIn函數。 問題是,變量$ loggedIn總是返回true。 有人可以幫忙嗎?

function validateUser($user)
{
    if(isset($user)){
    session_regenerate_id ();//this is a security measure
    $_SESSION['logged'] = 1;
    $_SESSION['userid'] = $user;}
}
//Validates Login
function isLoggedIn()
{
    if($_SESSION['logged'] = 1)
        return true;
    return false;
}

$loggedIn = isLoggedIn();

if($loggedIn){ SHOW CONTENT FOR LOGGED IN USERS }

else { show content for users not logged in }

您正在使用賦值運算符 =而不是條件運算符 ==

它應該是:

if ($_SESSION['logged'] == 1)
    return true;

賦值=的結果是右側表達式,即1,在這種情況下始終為真。 :)

這是因為你用單個等號設置$ _SESSION ['logged']。 使用雙等於:

function isLoggedIn()
{
    if($_SESSION['logged'] == 1)
        return true;
    return false;
}

function isLoggedIn(){if($ _ SESSION ['logged'] = 1)//為$ _SESSION ['logged']分配值'1'所以在這個if條件下它檢查是否有任何值是$ _SESSION ['記錄'],對於所有情況都是如此(有效/無效)返回true; 返回false; }

$ loggedIn = isLoggedIn(); / $ loggedIn的值將始終為true

將if($ _ SESSION ['logged'] = 1)更改為if($ _ SESSION ['logged'] == 1)

不是這個 ($ _ SESSION ['logged'] = 1)這是正確的 - > if($ _ SESSION ['logged'] == 1)

暫無
暫無

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

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