[英]PHP if statement not displaying HTML
因此,我要檢查用戶是否已登錄,如果可以,我將刪除注冊表單。 所以我以為我會用if else語句來做。 所以這是我的代碼
<?php if($_SESSION['loggedin'] === false): ?>
<h1>Sign Up</h1>
<?php elseif($_SESSION['loggedin'] === true):?>
<h1>Welcome</h1>
<?php endif;?>
由於某種原因,我得到的只是一個空白頁。 我正在使用
error_reporting(E_ALL);
ini_set('display_errors', '1');
顯示錯誤,但我什么也沒得到。 在$_SESSION['loggedin'
上執行var_dump
另一頁上,我得到bool(true)
,所以我知道我已經登錄並期望Welcome
。 我覺得這是語法錯誤。 有任何想法嗎?
嘗試這個:
<?php if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] === true): ?>
<h1>Welcome</h1>
<?php else:?>
<h1>Sign Up</h1>
<?php endif;?>
如果拖尾服務器日志(例如tail -F logs/php_error.log
),則可能會看到類似以下內容的內容:
PHP注意:未定義的變量:_SESSION
嘗試將代碼更改為:
if (isset( $_SESSION['loggedin'] ) && $_SESSION['loggedin'] == true )
{
echo 'Welcome';
} else {
echo 'Sign up';
}
我個人還建議更改退出邏輯,以使用unset($_SESSION)
,這樣您只需檢查以下內容:
if (isset( $_SESSION['loggedin'] ) ){
echo 'Welcome';
} else {
echo 'Sign up';
}
如果$_SESSION['loggedin']
不是布爾值,則可能不會執行任何代碼路徑,因為===
比較會檢查類型和值。 (有關詳細信息,請參見文檔 )
一種更安全和理智的方法是:
<?php if($_SESSION['loggedin'] === true): ?>
<h1>Welcome</h1>
<?php else:?>
<h1>Sign Up</h1>
<?php endif;?>
嘗試將isset()
添加到if測試中。
<?php if(!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] === false): ?>
<h1>Sign Up</h1>
<?php else: ?>
<h1>Welcome</h1>
<?php endif;?>
嘗試這種方式:
<?php if(!$_SESSION['loggedin']) { ?>
<h1>Sign Up</h1>
<?php } elseif($_SESSION['loggedin']) { ?>
<h1>Welcome</h1>
<?php } ?>
由於Undefined variable: _SESSION
錯誤,因此未得到結果。 因此,您可以使用任何無知的(@或&)Ex。 @$_SESSION['loggedin']
或&$_SESSION['loggedin']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.