除非完全必要,否则我需要避免在应用程序中创建会话。
我注意到,如果会话未启动,xajax 调用将无法正常工作:(。我的第一个方法是在 xajax 函数的开头创建会话(如果不存在),但是,它不起作用用户第一次调用该调用(自会话创建以来第二次调用)。
有什么方法可以处理/解决这种情况吗?
编辑:示例代码:
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 调用时创建会话。在这种情况下,我第一次调用“示例”函数时它不起作用。第二次一切顺利,我想是因为会话已创建。
编辑:您好,我注意到 chrome 和 explorer 下的一个问题:(。未收到第一个 ajax 调用(我没有得到答复)。这意味着用户需要单击两次才能收到正确的答案(弹出窗口例子)
Thanks!
问题似乎在于您是not呼叫session_start()
if $_COOKIE['PHPSESSID']
is设置,因此会话不会针对当前 ajax 请求进行初始化。你must call session_start()
在每个使用会话的脚本上——它不仅仅用于会话初始化。
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_start()
在包含它们的文件的顶部。如果您不希望在 ajax 调用之前加载会话,则将它们隔离到自己的 PHP 脚本中,同时不调用session_start()
在他们最初加载的主脚本上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)