我只是在用户登录时尝试显示div,因此只有当$_SESSION['MM_Username']
存在且等于某事时才能实现这一点我想出了以下代码。会话变量已设置,我知道它们存在,但是当我退出时,我仍然看到div:
<ul id="example-1" class="sticklr" style="list-style:none;display:<?php if ($_SESSION['MM_Username']=='' & $_SESSION['MM_Username']==NULL){echo('none');}?>">
如何调试此问题以查看问题是什么,或者如果有人知道只有在用户登录时才能更好地显示div,请告诉我。
答案 0 :(得分:2)
要检查是否在PHP中设置了变量,您可以使用isset()
函数:
<?php
//this checks to see if the variable isset and not null, if it is not set or is null then echo 'none';
if (!isset($_SESSION['MM_Username']) || empty($_SESSION['MM_Username'])){
echo 'none';
}
?>
empty()
检查是否存在与变量关联的值:http://php.net/empty
如果使用unset()取消设置变量,则不再设置该变量。 如果测试已设置为的变量,则isset()将返回FALSE 空值。另请注意,NULL字节(“\ 0”)不等同于PHP NULL常量。
关于isset()
的一个很酷的事情是,当你询问是否设置了一个不是的变量时,它不会抛出错误或警告信息。
答案 1 :(得分:1)
将测试条件设置为脚本开头的变量:
$isLoggedIn = isset($_SESSION['MM_Username']);
然后将您的标记包装在if:
中<?php if (isLoggedIn) { ?>
<ul></ul>
<?php } ?>
答案 2 :(得分:1)
几个问题: 你应该使用|| if语句的(OR)运算符(这可能是问题的根源,因为这个if语句总是返回false ...有些东西既不能是空字符串也不能为null) 2.如果此块包含任何类型的安全信息,则应将其完全删除,而不是仅使用css隐藏它
答案 3 :(得分:1)
在用户登录成功后注册一个布尔值为“True”的会话。
Ex:$ _SESSION ['userLogin'] = TRUE;
您可以将元素显示为下方,
<ul id="example-1" class="sticklr" style="<?php if($_SESSION['userLogin']) echo 'display:block;'; else 'display:none;'?>">
当该用户注销时将FALSE值分配给该会话
$ _ SESSION [ 'USERLOGIN'] = FALSE;
答案 4 :(得分:0)
您在退出时使用session_destroy
或unset($_SESSION['MM_Username'])
吗?
我认为这可以帮到你。
答案 5 :(得分:0)
我会用不同的方式来解决这个问题。我只会显示<ul>
,如果会话变量不为空。也许是这样的事情:
<?php if( !is_null($_SESSION['MM_Username']) ): ?>
<ul id="example-1" class="sticklr" style="list-style:none;">
<!-- ... -->
</ul>
<?php endif ?>