PHP 登录会话状态未更改


PHP login session state is not changing

我有 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;
}
?>