所以我正在检查用户是否已登录,如果是,我将删除注册表单。所以我以为我会用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
。我觉得它是一个语法错误。
有任何想法吗?
答案 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']