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