使用ajax在浏览器中单击时破坏php会话
Posted
技术标签:
【中文标题】使用ajax在浏览器中单击时破坏php会话【英文标题】:Destroying php session when clicked back in browser with ajax 【发布时间】: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 !提前致谢
【问题讨论】:
PHP - Session_Destroy upon pressing Back button的可能重复 不,我需要 ajax 这样做,它不重复,我已经尝试过使用 php,但是 php 没有任何功能来捕获按下浏览器返回按钮的事件 【参考方案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 代码而不是默认代码,甚至看看这个***.com/questions/17594413/…以上是关于使用ajax在浏览器中单击时破坏php会话的主要内容,如果未能解决你的问题,请参考以下文章