PHP if语句不显示HTML

时间:2014-06-26 14:44:31

标签: php html if-statement

所以我正在检查用户是否已登录,如果是,我将删除注册表单。所以我以为我会用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');

显示错误,但我没有得到任何东西。在var_dump上执行$_SESSION['loggedin'的另一页上,我得到bool(true),因此我知道我已登录并期待Welcome。我觉得它是一个语法错误。 有任何想法吗?

6 个答案:

答案 0 :(得分:2)

试试这个:

<?php if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] === true): ?>
<h1>Welcome</h1>
<?php else:?>
<h1>Sign Up</h1>
<?php endif;?>

答案 1 :(得分:2)

如果您拖尾服务器日志(例如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';
}

答案 2 :(得分:1)

如果$_SESSION['loggedin']不是布尔值,则可能没有代码路径被执行,因为===比较检查类型和值。 (有关详细信息,请参阅documentation

更安全和理智的方法是:

<?php if($_SESSION['loggedin'] === true): ?>
<h1>Welcome</h1>
<?php else:?>
<h1>Sign Up</h1>
<?php endif;?>

答案 3 :(得分:1)

尝试在if测试中添加isset()

<?php if(!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] === false): ?>
<h1>Sign Up</h1>
<?php else: ?>
<h1>Welcome</h1>
<?php endif;?>

答案 4 :(得分:0)

尝试这种方式:

<?php if(!$_SESSION['loggedin']) { ?>
<h1>Sign Up</h1>
<?php } elseif($_SESSION['loggedin']) { ?>
<h1>Welcome</h1>
<?php } ?>

答案 5 :(得分:0)

由于Undefined variable: _SESSION错误而未导致结果。所以你可以利用任何无知(@或&amp;)Ex。 @$_SESSION['loggedin']&$_SESSION['loggedin']