繁体   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