Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP$\u会话未按预期工作_Php_Session_Login_Logout - Fatal编程技术网

PHP$\u会话未按预期工作

PHP$\u会话未按预期工作,php,session,login,logout,Php,Session,Login,Logout,我有一个PHP网站,我正在维护,我已经确认这在某一点上是有效的 我们有一个使用登录系统的网站,该系统将登录用户的信息存储在$_SESSION['user']变量中。该站点用于在单击/logout.php时注销用户,这实际上删除了会话的该部分,然后标题重定向到主页 最近,当出于调试目的使用print\u r输出会话信息时,位于顶部的/logout.php文件在某种程度上看不到会话信息 如果我转到另一个页面,我会看到会话信息,但不会出现在注销页面上……这正是我无法删除会话信息的原因,因为它不可访问

我有一个PHP网站,我正在维护,我已经确认这在某一点上是有效的

我们有一个使用登录系统的网站,该系统将登录用户的信息存储在$_SESSION['user']变量中。该站点用于在单击/logout.php时注销用户,这实际上删除了会话的该部分,然后标题重定向到主页

最近,当出于调试目的使用print\u r输出会话信息时,位于顶部的/logout.php文件在某种程度上看不到会话信息

如果我转到另一个页面,我会看到会话信息,但不会出现在注销页面上……这正是我无法删除会话信息的原因,因为它不可访问

在浏览器关闭之前,我以为$u会话在站点上是全局的。我从来没有遇到过这种情况,我知道会话实例是在这个页面上启动的,所以它没有显示会话数据,这很奇怪

有什么想法吗?我完全被这件事难住了

代码:/logout.php

<?
#session_start() is inside this file
require_once($_SERVER['DOCUMENT_ROOT'].'/includes/config.php');

unset($_SESSION['user']);
header("location: /");
exit();
?>

$_SESSION['user']的检查是站点范围的,当需要不同的东西时,我会调用它下面的各种项目。其他人创建了这个网站,我正在尝试调试为什么它突然对他们不起作用。

您是否从设置会话开始的同一域访问logout.php,即example.com与www.example.com/logout.php

<?
#session_start() is inside this file
require_once($_SERVER['DOCUMENT_ROOT'].'/includes/config.php');

unset($_SESSION['user']);
header("location: /");
exit();
?>

至于只是取消设置特定会话数据,最好调用session_destroy,然后取消设置cookie以终止会话。

您是否从设置会话开始的同一域访问logout.php,即example.com与www.example.com/logout.php

<?
#session_start() is inside this file
require_once($_SERVER['DOCUMENT_ROOT'].'/includes/config.php');

unset($_SESSION['user']);
header("location: /");
exit();
?>

至于只是取消设置特定的会话数据,最好调用session\u destroy,然后取消设置cookie以终止会话。

如果域/子域与页面的其余部分相同,我会说这听起来像是典型的会话与输出错误。确保已启用所有错误,并显示它们,因为在调用会话\u start之前,可能已将输出打印到客户端。这将中断该功能并使会话不可用


若要解决此问题(如果是这种情况),应在会话\u开始之前删除所有输出。即使是之前的空格,如果域/子域与页面的其余部分相同,我会说这听起来像是典型的会话与输出错误。确保已启用所有错误,并显示它们,因为在调用会话\u start之前,可能已将输出打印到客户端。这将中断该功能并使会话不可用


若要解决此问题(如果是这种情况),应在会话\u开始之前删除所有输出。即使是之前的空格,也要记住PHP代码的第一行应该是session_start;没有别的了。如果您要做的只是取消设置会话变量并销毁会话,请尝试删除require_once$\u服务器['DOCUMENT_ROOT']./includes/config.php';并在logout.php文件的末尾添加session_start和session_destroy,看看它是否有效。

始终记住php代码的第一行应该是session_start;没有别的了。如果您要做的只是取消设置会话变量并销毁会话,请尝试删除require_once$\u服务器['DOCUMENT_ROOT']./includes/config.php';并在logout.php文件的末尾添加session_start和session_destroy,看看它是否有效。

FYI-我可以在logout.php页面上正确地看到其他环境变量,如$\u SERVER[]和其他变量。由于某种原因,我似乎无法访问$\u SESSION[]变量。这真的很奇怪。你能提供用于会话启动和循环的代码,以及用于工作和非工作logout.php页面访问$\u会话['user']的代码吗?仅供参考-我可以在此logout.php页面上正确地看到其他环境变量,如$\u SERVER[]和其他。由于某种原因,我似乎无法访问$\u SESSION[]变量。这真的很奇怪。你能提供用于会话启动和循环的代码,以及用于工作和非工作logout.php页面访问$会话['user']的代码吗?该会话被网站的其他方面使用。是的,我相信我仍然在同一个领域。我没想过,但我相信我们已经清楚了。用户配置文件区域可能是:…注销被发送到/logout.php作为。。。所以他们一直使用https在同一个域根中。@Will Ashworth:你能在你的问题中发布你的logout.php代码吗?现在,我只有这个。。。主要是因为我正在尝试调试。我看到服务器输出,但没有输出$u会话信息。如果我迁移到具有相同代码的另一个页面,我将看到会话的详细信息。谢谢你的帮助:天啊。我是否能够键入代码,使其看起来正确,而不是换行?LOL@Will,是的,但仅限于问答。评论区不完整
适用于复杂结构。请尝试编辑您的原始问题并在此处添加代码。注意,代码应在每行缩进4个空格。该会话用于网站的其他方面。是的,我相信我仍然在同一个领域。我没想过,但我相信我们已经清楚了。用户配置文件区域可能是:…注销被发送到/logout.php作为。。。所以他们一直使用https在同一个域根中。@Will Ashworth:你能在你的问题中发布你的logout.php代码吗?现在,我只有这个。。。主要是因为我正在尝试调试。我看到服务器输出,但没有输出$u会话信息。如果我迁移到具有相同代码的另一个页面,我将看到会话的详细信息。谢谢你的帮助:天啊。我是否能够键入代码,使其看起来正确,而不是换行?LOL@Will,是的,但仅限于问答。注释区域不适用于复杂结构。试着编辑你的原始问题并在那里添加代码。注意,代码应该在每行缩进4个空格