QQ 1640076782

2014年04月14日

swfupload 火狐浏览器不能上传图片出现302错误

Filed under: phper — 标签: — lijie @ 2:23 上午

最进空间php版本升级导致很多网站后台上传图片的时候出现302错误

经测试google浏览器,ie浏览器,360浏览器均可以正常上传图片,唯独火狐浏览器不能上传图片,一上

传就出现302错误,甚是烦人

查找了好多资料都说是flash在火狐浏览器不能传递session

而swfupload又很长时间不更新了,难道真的只能这样,问题放在这里不管,让客户用其他浏览器上传图片?

这个302错误纠结了我好长一段时间,一直在寻找解决方法,今天终于找到了!!!

swfuplaod在上传时,会新开一个进程,和原来的进程不一致,要解决这个问题,需要指定

session_id,然后在登录页面判断,如果有 post过来的session_id,那么就用函数

session_id( $_POST['PHP_SESSIONID'])指定一下。

具体原因:

swfupload是用flash上传文件的,然而flash在火狐浏览器中不能够传递session和cookie,所以在需要登陆

验证的地方无法通过(不能带session或cookie),也就相当于上传文件时遇到防火墙,无法通过

解决方法如下:

swfupload中有一个post_params参数设置,我们可以通过设置

post_params: {“PHPSESSID”: “<?php echo session_id(); ?>”, “dopost” : “”}

当点击上传的时候,会通过POST方法传递PHPSESSID(即$_POST['PHPSESSID']),然后在登陆验证处添加

如下代码(ps这个登录验证的地方并不一定是登录页面,应该是通用验证页面

if(isset($_POST['PHPSESSID'])){

session_id($_POST['PHPSESSID']);

}else{

//否则就在这里正常验证
}

修改后上传文件,一测试问题完美解决O(∩_∩)O~

如果你有外贸企业网站建站需求,欢迎随时联系我们

QQ客服:415682727

电话:020-39907297