【问题标题】:Destroying php session when clicked back in browser with ajax使用ajax在浏览器中单击时破坏php会话
【发布时间】:2018-01-05 23:44:41
【问题描述】:

我有两个文件 index.php(第一个)和第二个 booking.php(第二个),我想要的是当有人从 booking.php 移动到 index.php 会话被破坏时。

到目前为止,我尝试过使用 ajax 破坏会话

这是我在 booking.php 文件中的相关代码

$(window).on("popstate", function (event, state) {

    $.ajax({
          type: 'GET',
          url: 'logout.php',
          async:yes,
          success: function(msg) {
              if (msg == 'loggedOut') {
            window.location.href = 'index.php';
              }
          }
      });
    });

这是我的 logout.php 文件

<?php
session_start();
session_destroy();
echo "loggedOut";
?>

是否有任何可能的方法来做我提到的上述事情,如果是,那么我应该在哪里我的 ajax 代码,在 booking.php 或 index.php !提前致谢

【问题讨论】:

标签: javascript php jquery ajax session


【解决方案1】:

您必须在 php 文件中重置会话 ID。

session_start(); // fetch OR re-start current session

session_regenerate_id(true); // Update the current session id with a newly generated one

$_SESSION=array(); // empty session data

session_write_close(); // Write session data and end session

【讨论】:

  • 我知道该怎么做,我可以很容易地使用它取消设置会话,我的问题是如何用 ajax 来做!!! ,检测点击浏览器后退按钮的事件
  • 您可以禁用浏览器缓存。
  • 在注销页面的head标签中通过这种方式禁用浏览器缓存。
  • 它会自动取消会话吗??
【解决方案2】:

在你的 booking.php 文件中添加这个

$_SESSION["booking_page"] =true;

在你的 index.php 中

if(isset($_SESSION["booking_page"]) &&  $_SESSION["booking_page"]===true){
$_SESSION["booking_page"]=false;
//your logout code here; 
}

所以,会发生什么......如果索引页面来自预订页面,您可以检测到它并在此之后做任何您想做的事情。

【讨论】:

  • @gANDALF 好吧,会话是服务器端,ajax 是客户端。您不能仅使用 ajax 进行会话。您必须向服务器发送请求以销毁或附加会话
  • 这就是我在上面所做的,发送一个 ajax 请求,我想要的是当我按下浏览器的后退按钮时调用一个函数并且 ajax 在服务器上发送请求以销毁会话
  • @gANDALF 您需要检测用户是否按下了返回按钮,然后运行您的 ajax 代码而不是默认代码,甚至看看这个stackoverflow.com/questions/17594413/…
猜你喜欢
  • 2013-06-11
  • 1970-01-01
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 2016-11-15
  • 2013-11-10
相关资源
最近更新 更多