gpt4 book ai didi

PHP 通过 AJAX 调用注销

转载 作者:行者123 更新时间:2023-12-01 07:12:08 25 4
gpt4 key购买 nike

我有一个如下所示的注销功能。

if ($_GET["argument"]=='logOut'){
if(session_id() == '') {
session_start();
}
session_unset();
session_destroy();
$host = $_SERVER['HTTP_HOST'];
$extra = 'index.php';
header("Location: http://$host/$extra");
exit;
}

我的问题是,如果我检查页面并查看网络预览和响应,它看起来“很好”。

列出了两个已处理的 php 文件。

http://localhost:5000/inc/mainScripts.php?argument=logOut

这是函数所在的位置。

http://localhost:5000/index.php

这是我想要重定向的地方。

Chrome 检查页面区域的 Network 中的 Response 选项卡包含完整的登录 html 页面 login.php 但在浏览器中它保留在同一位置。就像从未调用过 header 命令一样。

我做错了什么?

HTML AJAX 调用此函数:

        $("#logout_btn").click(function() {
$.ajax({
url: './inc/mainScripts.php?argument=logOut'
})
});
<小时/>

解决方案

AJAX

        $("#logout_btn").click(function() {
$.ajax({
url: './inc/mainScripts.php?argument=logOut',
success: function(data){
window.location.href = data;
}
});
});

PHP

if ($_GET["argument"]=='logOut'){
if(session_id() == '') {
session_start();
}
session_unset();
session_destroy();
$host = $_SERVER['HTTP_HOST'];
$link = "http://$host/index.php";
echo $link;
}

最佳答案

试试这个。

if( isset($_GET['argument']) && $_GET['argument'] == 'logOut' && !empty( session_id() ) ) {

session_destroy();
header("Location: http://" . $_SERVER['HTTP_HOST'] . "/index.php");
exit;

}

编辑:如果您使用 AJAX,将 php 脚本中的 URL 发送回 JavaScript 并从那里重定向会更容易。

关于PHP 通过 AJAX 调用注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25260446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com