关于ThinkPHP下使用Uploadify插件提示HTTP Error (302)错误的解决办法

最近用ThinkPHP开发一个项目,集成了批量上传文件插件Uploadify,在谷歌Chrome和IE下都能正常上传,只有火狐下提示这个错误,网上找了很多解决办法,基本都说flash在firefox下重新发起session会话,由于session没有验证通过所以报错,这个问题网上有很多解决方案,但是试了很多,都没有真正解决我的问题,最后看了官方的解决方案
http://www.uploadify.com/documentation/uploadify/using-sessions-with-uploadify/

才真正解决。

问题:我用的是ThinkPHP框架,同时我开启了_initialize()(不知道这个函数的去看下ThinkPHP帮助手册),在这个函数里,我执行了一个检测用户是否登陆的验证函数,这样每次访问控制器,都会执行验证用户是否登陆有权限执行相应操作,但是因为在火狐中,flash发起的请求并没有连同SESSIONID一同发送到ThinkPHP控制器,所以导致了无法通过用户登陆请求;

解决方法:这时我们可以在uploadify的formData参数中定义一个SESSION数据,这样就可以通过$_POST或$_GET的方法将SESSION数据发送到控制器,在控制器_initialize方法中把传递过去的SESSION数据设置为当前会话的SESSION,这样就可以通过验证了,但是,这里需要注意一条,重新设置SESSION必须要放在执行验证登陆函数的前边,否则无效,因为如果登陆验证不通过,那么后边的代码就都不会执行了;

客户端(ThinkPHP上传文件模板)代码

js代码  
  
$(function() {  
    $('#file_upload').uploadify({  
        'formData' : {  
			'session_name': "<?php echo $_SESSION['session_name']; ?>",  
        },  
        //后边对于解决本问题无关代码省略。。。  
     })  
}


服务器端(ThinkPHP控制器)代码

php代码

//初始化执行
publicfunction _initialize(){
	//此处为解决Uploadify出现http 302错误 重新设置SESSION
	if(isset($_POST['session_name'])) {
		$_SESSION['session_name'] = $_POST['session_name'];
	}
	//执行登陆验证检测函数
	$this->powerverify();       
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值