我正在使用 swf-upload 来处理我正在处理的网站上的文件上传。
问题在于捕获函数,称为 swf-upload.php。如果我直接访问它所在的 URL,它可以正常工作,它会正确读取启动会话并获取用户权限,但是当网页使用 ajax 回调调用它时,它声称会话是空的。
我正在使用错误处理程序和输出日志记录的组合来找出它在做什么,并且直接访问和 ajax 访问之间的代码路径完全没有区别。
有什么想法吗?
这是 swfupload 中的一个已知问题,您需要将会话 ID 传递给 swfupload 构造函数,然后使用您传递的会话 ID 在远程文件中重新创建显式重新启动此会话,如下所示:
// in your javascript file
swfu = new SWFUpload({
upload_url: "http://<?=$_SERVER['HTTP_HOST']?>/scripts/swfupload2/upload.php",
post_params: {"PHPSESSID": "<?=session_id()?>"}
}
// in your PHP file
if (isset($_POST["PHPSESSID"])) {
session_id($_POST["PHPSESSID"]);
}
也许您可以通过 ajax url 中的 PHPSESSID 显式传递会话 ID?您可以使用 session_id() 函数http://pl2.php.net/manual/en/function.session-id.php阅读它