簡體   English   中英

僅當用戶登錄后才能顯示元素?

[英]How can I display an element only if user is logged in?

我試圖僅在用戶登錄后才顯示div,因此,僅在$_SESSION['MM_Username']存在且等於某個值時才顯示div,為實現此目的,我$_SESSION['MM_Username']了以下代碼。 設置了會話變量,我知道它們存在,但是當我注銷時仍然看到div:

<ul id="example-1" class="sticklr" style="list-style:none;display:<?php if ($_SESSION['MM_Username']=='' & $_SESSION['MM_Username']==NULL){echo('none');}?>">

我該如何調試它以查看問題所在,或者如果有人知道只有在用戶登錄后才能更好地顯示div的方法,請告訴我。

要檢查是否在PHP中設置了變量,可以使用isset()函數:

<?php

//this checks to see if the variable isset and not null, if it is not set or is null then echo 'none';
if (!isset($_SESSION['MM_Username']) || empty($_SESSION['MM_Username'])){
    echo 'none';
}

?>

empty()檢查是否存在與變量關聯的值: http : //php.net/empty

如果使用unset()取消設置了變量,則將不再設置該變量。 如果測試已設置為NULL的變量,則isset()將返回FALSE。 另請注意,NULL字節(“ \\ 0”)不等於PHP NULL常量。

資料來源: http : //php.net/isset

關於isset()一件很酷的事情是,當您詢問是否設置了未設置的變量時,它不會引發錯誤或警告消息。

在腳本的開頭將測試條件設置為變量:

$isLoggedIn = isset($_SESSION['MM_Username']);

然后將您的標記包裝在if中:

<?php if (isLoggedIn) { ?>
<ul></ul>
<?php } ?>

幾個問題:1.您應該使用||。 (或)if語句的運算符(這可能是問題的根源,因為此if語句將始終返回false ...某些內容不能同時為空字符串和null)2.如果此塊包含任何類型的安全信息您應該將其完全刪除,而不是僅使用CSS隱藏它

用戶登錄成功后,使用布爾值“ True”注冊會話。

例如:$ _SESSION ['userLogin'] = TRUE;

您可以將元素顯示為波紋管,

    <ul id="example-1" class="sticklr" style="<?php if($_SESSION['userLogin']) echo 'display:block;'; else 'display:none;'?>">

當該用戶注銷時,為該會話分配FALSE值

$ _SESSION [ 'USERLOGIN'] = FALSE;

您是否在注銷時使用session_destroyunset($_SESSION['MM_Username'])

我認為這可以為您提供幫助。

我會以不同的方式來處理。 如果會話變量不為null, 僅顯示<ul> 大概是這樣的:

<?php if( !is_null($_SESSION['MM_Username']) ): ?>
<ul id="example-1" class="sticklr" style="list-style:none;">
  <!-- ... -->
</ul>
<?php endif ?>

暫無
暫無

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

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