gpt4 book ai didi

php - 为什么此 PHP 脚本(由 AJAX 调用)随机无法正确加载 SESSION?

转载 作者:IT王子 更新时间:2023-10-28 23:45:52 26 4
gpt4 key购买 nike

啊,堆栈溢出,

我在我的项目中遇到过这个问题:简而言之,从我收集到的情况来看,通过 AJAX 调用的 PHP 脚本没有正确注册设置在 index 顶部的 SESSION 变量。 php 页面。起初,我认为这是由于 session 锁定,所以我继续添加 session_write_close(),但是,这并没有解决问题。

此问题仅发生在大约 25% 的时间新用户 session 开始后(即:当用户登录时)。

我继续删除了 90% 的代码,以将错误降低到重现所需的最低编码。

Firebug 通过 ajax.php 产生的错误结果

image

Firebug 通过 ajax.php 得到的预期结果

image2

注意:两个结果都显示索引的 print_r($_SESSION) 返回为 Array ( [userid] => 3724 [trialstatus] => 1 [trialtcompletions] => 0 [userlevel ] => 5 ) 这让我知道问题不在于在索引页面上设置的 session 。

有没有人知道一个修复程序(甚至可能不是代码方面的,甚至可能是服务器设置),它可以正确地允许通过 AJAX 调用的脚本正确访问 Session 变量?

复制测试场景

  1. 删除域的所有 cookie
  2. 加载页面(最多 2 次)。重新加载 2 次后不再出现问题。
  3. 如果未显示错误结果,请重复步骤。

index.php

<?php

if (session_status() === PHP_SESSION_NONE) session_start();

if (!isset($_SESSION['userid']))
{
$_SESSION['userid'] = 3724; //$login['AccountID'];
}

$_SESSION['trialstatus'] = "12";
$_SESSION['trialtcompletions'] = "12";
$_SESSION['userlevel'] = "12";
session_write_close();

print_r($_SESSION);
?>
<!DOCTYPE html><html><head><script src="./js/jquery.min.js"></script>
<script>
function loadStage(step,input,callback){
$.ajax({
type: "POST",
url: "./ajax.php",
data: { step: step, input: input },
dataType: "JSON",
timeout: 5000,
success: function(data){
if(data !== false){
callback(data);
}
}
});
}

$(document).ready(function(){
startLoadingSequence();
});

function startLoadingSequence(skipped){
loadStage(1,skipped,function(data){});
}
</script>
</head></html>

ajax.php

<?php
if (session_status() === PHP_SESSION_NONE) session_start();

print_r($_SESSION);

if (!isset($_SESSION['userid']))
{
die(json_encode(array(
"error",
"You must be logged in to view report data."
)));
}
?>

每个请求:

phpinfo

阅读评论以获取更多信息

最佳答案

有两件事可能导致此问题。

  1. 您的 session 保存路径 (df -h) 中没有足够的空间,或者您的服务器没有保存它的权限。
  2. 您的服务器位于负载均衡器之后,您必须将 session 保存在持久性后端(例如 memcache 或 redis)中。

关于php - 为什么此 PHP 脚本(由 AJAX 调用)随机无法正确加载 SESSION?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31197111/

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