簡體   English   中英

PHP if語句未顯示HTML

[英]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.

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