gpt4 book ai didi

php - 在 AJAX 请求上清空 $_SESSION 超全局变量,但保留 session ID

转载 作者:行者123 更新时间:2023-12-02 00:21:02 25 4
gpt4 key购买 nike

我在使用 $_SESSION 时遇到问题AJAX 请求上的 superglobal。
session_start()在任何 session 编码之前调用函数。调用代码和 AJAX 响应代码中的 session ID 也相同(通过在两个脚本中回显 session_id() 进行测试)。 AJAX PHP 文件在同一个域中。一切都应该按照标准的定义工作,但是当我这样做时 print_r($_SESSION)在调用的 AJAX 脚本文件中,我得到 Arrray( )输出。

我撞到了砖墙......我不知道为什么这不起作用......

在 Chrome 和 Firefox 中都进行了检查。

有任何想法吗?

更新:

问题出在 $.ajax(...)要求!当我执行 AJAX 请求时,它知道正确的 session ID,以及 session_start()函数返回 TRUE (成功继续 session )但随后它重置了我的 $_SESSSION超全局!它清空它......我不知道为什么......

代码:

索引.php:

<?php

session_start();

$_SESSION['Test']='O.K.';

echo("SESSION_ID: " . session_id());
echo("SESSION_SIZE:" . sizeof($_SESSION));

?>

... Standard HTML stuff and jQuery include ...

<script>
$.ajax(
{
type: "POST",
url: "AJAXTest.php",
data: null,
success: function(sData) { alert(sData); }
});

</script>

AJAXTest.php:
<?php

session_start();

echo("SESSION_ID: " . session_id());
echo("SESSION_SIZE:" . sizeof($_SESSION));

?>

index.php 输出:
SESSION_ID: xxxxxxxxxxxxxxxxxxxxxxx
SESSION_SIZE: 1

警报输出:
SESSION_ID: xxxxxxxxxxxxxxxxxxxxxxx (right session id)
SESSION_SIZE: 0

并且在 AJAX 调用之后 $_SESSION 是空的。在具有相同 session 的所有其他脚本中......我感到困惑......

最佳答案

这可能是因为如果你没有在 $_SESSION 中输入任何值.它会告诉你 array() 做 print_r($_SESSION)
尝试设置一个值 $_SESSION['user']='frankie'
然后做 print_r($_SESSION);session_id() 永远不会显示在 $_SESSION 数组中。

关于php - 在 AJAX 请求上清空 $_SESSION 超全局变量,但保留 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10967156/

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