首页 > PHP, 前端技术 > ThinkPHP使用Uploadify等flash上传插件无法传递session的问题

ThinkPHP使用Uploadify等flash上传插件无法传递session的问题

在ThinkPHP在使用Uploadify或其他基于Flash的上传插件的时候很多人会碰到上传控件无法传递Session的问题,特别是Firefox浏览器上面。官方解释可以将session id通过插件参数传递到后端,以下是Uploadify官方解决方案,但实测无法实现传递Session.

本人使用环境是ThinkPHP3.2.2,Firefox。

浏览器插件配置
$(‘#file_upload).uploadify({
// Your normal options here
formData:{‘<?php echo session_name();?>’: ‘<?php echo session_id();?>’}
});

服务端
$session_name = session_name();
if (!isset($_POST[$session_name])) {
exit;
} else {
session_id($_POST[$session_name]);
session_start();
}

实测发现无法将session id传递过来,推测应该是在 session_id($_POST[$session_name]); 之前ThinkPHP框架之已经执行过session_id()初始化操作
将官方方案改进一下就可以奏效

服务端
$session_name = session_name();
if (!isset($_POST[$session_name])){
exit;
}
else{
session_destroy(); //销毁会话中的全部数据
session_id($_POST[$session_name]); //设置当前会话的ID为前端页面传递过来的session id
session_start();
}

类似其他使用flash的上传插件应该也存在相同的问题可以依此方案解决。

参考资料:

http://www.uploadify.com/documentation/uploadify/using-sessions-with-uploadify/
http://www.thinkphp.cn/topic/4140.html

  1. 本文目前尚无任何评论.

=5加3(必填)请输入两数相加的结果。