最进空间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