php网页302错误,swfupload提示“错误302”的解决方法

以前用谷歌浏览器打开页面使用swfupload上传文件挺正常的,今日却来个“错误:302”提示,傻眼了我。

百度一下,得到的结果基本上都是说SESSION的问题,说flash在谷歌浏览器、火狐浏览器不能传递session,需要添加一个判断:

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

session_id($_POST['PHPSESSID']);

}

但自己却不知道这段代码添加在哪。最后谷歌搜索了一下,看到一篇文章,其中说到“swfuplaod在上传时,会新开一个进程,和原来的进程不一致,要解决这个问题,需要指定session_id,然后在登录页面判断,如果有 post过来的session_id,那么就用函数session_id( $_POST['PHP_SESSIONID'])指定一下。”(其实他已经说的很清楚,怪自己笨啊没完全理解),然后自己也搜索了一下错误302的意思,最后终于找到原因的所在了。

问题原因应该是这样的:

因为swfupload是用flash上传文件的,然而由于flash在谷歌、火狐等浏览器中不能够传递session和cookie,所以在需要登陆验证的地方无法通过(不能带session或cookie),也就相当于上传文件时遇到防火墙,无法通过。

解决的方法:

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

post_params: {"PHPSESSID" : "<?php echo session_id(); ?>"}

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

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

session_id($_POST['PHPSESSID']);

}else{

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

}

当然,为了安全,我们可以在post_params中再添加一项参数,如:

post_params: {"PHPSESSID" : "<?php echo session_id(); ?>","isadmin":"<?php echo $isadmin; ?>"}

然后在登陆验证处添加:

if(isset($_POST['PHPSESSID']) && $_POST['isadmin']=="你设置的$isadmin的值"){

session_id($_POST['PHPSESSID']);

}else{

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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值