PHP中的结束会话

PHP中的结束会话,php,Php,我在结束会话时遇到问题,我的MAIN.PHP是会话开始的地方,在我的MAIN.PHP中我有这是我的logout.PHP的代码 <?php unset($_SESSION['user']); unset($_SESSION['pass']); session_destroy(); echo"<script> window.location.href = '../index.php' ; </script>"; exit(); ?> 您可能也想在其中

我在结束会话时遇到问题,我的MAIN.PHP是会话开始的地方,在我的MAIN.PHP中我有
这是我的logout.PHP的代码

<?php
 unset($_SESSION['user']);
 unset($_SESSION['pass']);
 session_destroy();
 echo"<script> window.location.href = '../index.php' ; </script>";
 exit();
 ?>

您可能也想在其中添加
会话\u start()

session_start();
unset($_SESSION['user']);
 unset($_SESSION['pass']);
 session_destroy();
 header('Location: index.php');

另外,我个人更喜欢取消整个会话的设置,比如
unset($\u session),但每个人都有自己的做事方式

我要大胆尝试一下,说这会解决你的问题

根据:

session\u destroy()
销毁与当前会话关联的所有数据。它不会取消设置与会话相关的任何全局变量,也不会取消设置会话cookie。要再次使用会话变量,必须调用session_start()

为了完全终止会话(如注销用户),还必须取消设置会话id。如果使用cookie传播会话id(默认行为),则必须删除会话cookie。setcookie()可用于此目的

总而言之,您的问题是,讨厌的会话cookie(用于标识会话)没有被取消设置。因此,当您点击后退按钮,并
session_start()显示在脚本顶部,全局会话变量仍在引用中。正如另一个答案所暗示的那样,尝试:

$_SESSION = array();

清除所有全局会话数据。此外,正如文档所说的,取消会话cookie。

如果在单击上一个按钮后刷新,它仍然有效吗?您可能需要考虑设置<代码>位置:< /Cord>页眉>代码>标题(“位置:yurl”) >相对于JavaScript重定向。无需让客户端立即调用服务器。只需在销毁会话后重定向它们。如果你对HTTP代码感兴趣,我相信它应该是302。是的,它仍然在工作。@war10ck即使我在按back时仍然使用标题,我也可以访问我的php。对于所有的复印机,请阅读帖子和评论,这不是一个常规的“后退按钮”问题。当我按back时仍然可以访问谢谢,如果我发现很难找到相关的标题,我很抱歉。@user2761456都是好朋友。我们都还在学习。这就是堆栈溢出的好处。它有一些隐藏的宝石,可以真正解决一些大问题。有时候要找到他们有点难。不用担心,伙计。祝你好运,编码快乐!:)