我有 2 个文件,在我的主索引上.php我有:
<?php
session_start();
$_session['login']=false;
??
我有另一个存储导航栏的 php 文件,在这个 php 文件中我有
if ($_SESSION['login']==true) { ?>
show this menu.. user is logged in.
<?php }else { <?
show this one, not logged in.
<?php } ?>
在我的登录名中.php我只有:
session_start();
$_SESSION['login']=true;
那么,为什么当我调用 login.php 文件(单击按钮)时,会话状态不会更改?
$_session
是一个超全局的,必须为大写。
参考:
- http://php.net/manual/en/language.variables.superglobals.php
检查错误会给你带来一些东西。
- http://php.net/manual/en/function.error-reporting.php
您还需要确保会话已使用会话在所有文件中启动。
参考:
- http://php.net/manual/en/function.session-start.php
你也有 2 倍??
如果它是你真实代码的一部分,我没有。
如果是,那么这需要读作?>
.
旁注:
最好检查会话是否已设置,而不是仅检查会话是否true|false
。
即:
if (isset($_SESSION['login']) && $_SESSION['login']==true)
或(不为空)
if (!empty($_SESSION['login']) && $_SESSION['login']==true)
首先,您正在使用的所有文件都必须在所有代码"session_start()"之前插入$_SESSION
PHP 中的超全局变量必须以大写形式编写。因此,这应该是大写的:
$_session['login']=false;
喜欢这个:
$_SESSION['login']=false;
看起来我解决了我的问题......其中一个面部时刻。我没有检查会话是否已设置,因此我在刷新索引时不断将其重置为 0.php。谢谢你让我知道它应该在大写字母,不知道这一点。因此,将其添加到索引的顶部.php解决了它:
<?php
session_start();
if (!isset($_SESSION['login'])) {
$_SESSION['login']=0;
}
?>