PHP:$ _SESSION似乎没有设置。 任何的想法?

我在搜索为什么我的会话不会被设置时通过这个SO Q / A.

On $_GET set $_SESSION won't work

我不知道这是否适用于我的情况。 在这里。

的index.php

     ... 

然后,当用户validation自己时,我会调用以下内容。

authenticate.php

  

我还每隔5秒检查一次身份validation事件,以便为用户所在的部分创建按钮。

authenticated.php

  

和我的Ajax调用设置:

my_project.js

 $(document).ready(function() { startAuthenticationChecking(); }); function startAuthenticationChecking() { setInterval(function() { ajaxSession("authenticated.php"); }, 5000); } function ajaxSession(actionURL) { var authenticated = false; $.ajax({ async: false, url: actionURL, success: function(authenticated) { alert(authenticated); if (authenticated) { if (("#addNewAtvButtonDiv").is(":empty")) $("#addNewAtvButtonDiv").add(""); if (("#addNewSledButtonDiv").is(":empty")) $("#addNewSledButtonDiv").add(""); if (("#addNewUtvButtonDiv").is(":empty")) $("#addNewUtvButtonDiv").add(""); $("button").button(); } else { $("#addNewAtvButtonDiv").children().remove(); $("#addNewSledButtonDiv").children().remove(); $("#addNewUtvButtonDiv").children().remove(); } } }); } 

我的问题

虽然我在session_start();之后设置$_SESSION["authenticated"] = false session_start();ajaxSession()询问用户是否通过authenticated.php进行authenticated.php ,它总是返回'false' 。 使用带有正确凭据的authenticate.php进行authenticate.php后的事件。

相关问题: PHP / Ajax : How to show/hide DIV on $_SESSION variable value?

欢迎任何帮助! 我最近几天晚上都在研究这个问题,现在还在。

谢谢!

确保使用$_SESSION变量的所有页面都有session_start(); 在任何输出之前声明。

它看起来像authenticate.php没有session_start(); 声明,但在下面使用会话请求。

$ _SESSION [“authenticated”] = $ isAuthentic;

这将导致问题,除非您已包含/需要文件authenticate.php ,并且父文件具有session_start(); 声明。

注意:

在session_start(); 将创建会话或恢复会话。 每个使用会话变量的页面都需要它。

php.net

session_start()根据通过GET或POST请求传递的会话标识符创建会话或恢复当前会话,或通过cookie传递。

除了检查你是否有session_start()之外,如果在检查它们是否已设置或检查其值之前尚未声明它们,则会遇到会话变量未正确报告值的问题。

所以尝试放置这个:

 $_SESSION["authenticated"]; 

在你之前:

 if(!isset($_SESSION["authenticated"])) $_SESSION["authenticated"] = false;