[英]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_destroy
或unset($_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.