gpt4 book ai didi

php - 在 ajax 调用期间创建 session (php-xajax)

转载 作者:行者123 更新时间:2023-12-04 20:49:01 28 4
gpt4 key购买 nike

除非完全必要,否则我需要避免在应用程序中创建 session 。

我注意到,如果 session 未启动,xajax 调用将无法正常工作 :(。我的第一种方法是在 xajax 函数的开头创建 session (如果它不存在),但是,它不用户第一次调用时不工作(自 session 创建后第二次工作)。

有什么方法可以处理/修复这种情况?

编辑:示例代码:

function example ($parameters) {
if (!isset($_COOKIE["PHPSESSID"])) {
session_start(); // we create the session if it didn't exist previously
}
$response = new XajaxResponse();
.....
return $response;
}

我的想法是在用户进行 ajax 调用时创建 session 。在这种情况下,我第一次调用“示例”函数时它不起作用。第二个没问题,我认为是因为 session 已创建。

编辑:你好,我注意到 chrome 和 explorer 下的一个问题 :(。没有收到第一个 ajax 调用(我没有得到回答)。这意味着用户需要点击两次才能收到正确的答案(与例如弹出窗口)

谢谢!

最佳答案

问题似乎是您没有调用 session_start() if $_COOKIE['PHPSESSID'] 已设置,因此未针对当前 ajax 请求初始化 session 。您必须在每个使用 session 的脚本上调用session_start()——它不仅仅是为了 session 初始化。

function example ($parameters) {
// If this function uses the session, you MUST call session_start()
// Don't do it conditionally.
session_start();

$response = new XajaxResponse();
.....
return $response;
}

如果您所有的 ajax 处理函数都使用 session ,那么您最好在包含它们的文件顶部调用 session_start()。如果您不希望 session 在 ajax 调用之前加载,则将它们隔离到它们自己的 PHP 脚本中,同时您不在它们最初加载的主脚本上调用 session_start()

关于php - 在 ajax 调用期间创建 session (php-xajax),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12800653/

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