解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法


Posted in PHP onDecember 18, 2015

最近用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参数中定义一个SESSIONID,这样就可以通过$_POST或$_GET的方法将SESSIONID发送到控制器,在控制器把传递过去的SESSIONID设置为当前会话的SESSIONID,这样就可以通过验证了,但是,这里需要注意一条,重新设置SESSIONID必须要放在执行验证登陆函数的前边,否则无效,因为如果登陆验证不通过,那么后边的代码就都不会执行了,我之前就犯了这样的错误,将重置SESSION放到了上传文件处理的函数中,下面贴上详细的代码,以供大家参考:

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

$(function()
 {

   $('#file_upload').uploadify({

    'formData' 

: {

     '<{:session_name()}>'

: '<{:session_id()}>',
//此处获取SESSIONID

     'timestamp'

: '<{$timestamp}>',

     'token' 

: '<{$token}>'

    }

     //后边对于解决本问题无关代码省略。。。

    })

}

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

//初始化执行

 public

function 
_initialize(){

  //此处为解决Uploadify在火狐下出现http
 302错误 重新设置SESSION

  $session_name

= session_name();

  if

(isset($_POST[$session_name]))
 {

   session_id($_POST[$session_name]);

   session_start();

  }

   //执行登陆验证检测函数

  $this->powerverify();  

 }

为大家分享了我自己亲身实例之外,还在网上找到了其他朋友的实例进行了整理,希望对大家的学习有所启发。

标题:PHP Uploadify 火狐下报 302错误
大概原因:在Uploadify官网已经说明,是说Flash有一个Bug它提交请求的时候不会自动带session,所以浏览器判断没有获取到session值,我用的ThinkPHP框架,_initialize(){}(在执行其他方法前会先执行这个函数,我用它来判断用户是否登录),在这个函数中,我照网上的方法:
基本思路:根据Flash这个bug的原理来做的,就是我们把session值作为一个参数一起上传.
Uploadify官网也说了解决之道:给一个选项
formData: {‘SESSION NAME':'SESSIOIN ID'}----------------json格式
我用隐藏域把这些变量保存在模板中(值可以得到),然后在js文件中我直接写作:

var session_name = (使用Jquery通过选择器获取得到值)
var session_id = (同上);
formData: {session_name, session_id},

其他解决思路:
这个问题确实存在,其实这个问题可以转化为session丢失。虽然您针对session进行了特殊处理,作为参数传入,但是不代表您服务端正确获取,建议您进入debug模式跟踪一下服务器端是否正确获取参数,并顺利加载session。另外还有个问题,如果您当前打开url与您提交form的url是一样的,还得记得加上随机数。

以上就是针对ThinkPHP下使用Uploadify插件火狐上传报302错误的解决方法,希望对大家的学习有所帮助。

PHP 相关文章推荐
不错的PHP学习之php4与php5之间会穿梭一点点感悟
May 03 PHP
php smarty的预保留变量总结
Dec 04 PHP
PHP 字符截取 解决中文的截取问题,不用mb系列
Sep 29 PHP
一些PHP Coding Tips(php小技巧)[2011/04/02最后更新]
May 02 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
Jun 19 PHP
php中动态调用函数的方法
Mar 16 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
如何解决PHP无法实现多线程的问题
Sep 25 PHP
Apache启动报错No space left on device: AH00023该怎么解决
Oct 16 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
Mar 05 PHP
Laravel框架在本地虚拟机快速安装的方法详解
Jun 11 PHP
不常用但很实用的PHP预定义变量分析
Jun 25 PHP
详解 PHP加密解密字符串函数附源码下载
Dec 18 #PHP
PHP封装的字符串加密解密函数
Dec 18 #PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 #PHP
几个优化WordPress中JavaScript加载体验的插件介绍
Dec 17 #PHP
简介WordPress中用于获取首页和站点链接的PHP函数
Dec 17 #PHP
WordPress中查询文章的循环Loop结构及用法分析
Dec 17 #PHP
WordPress中用于获取文章作者与分类信息的方法整理
Dec 17 #PHP
You might like
php面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
php简单分页类实现方法
2015/02/26 PHP
PHP检测链接是否存在的代码实例分享
2016/05/06 PHP
PHP容器类的两种实现方式示例
2019/07/24 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
js不能跳转到上一页面的问题解决方法
2013/03/01 Javascript
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
javascript中undefined与null的区别
2015/08/16 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
2017/02/08 Javascript
JS在浏览器中解析Base64编码图像
2017/02/09 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
2017/06/13 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
layui数据表格重载实现往后台传参
2019/11/15 Javascript
vue axios请求成功却进入catch的原因分析
2020/09/08 Javascript
深入理解Python 代码优化详解
2014/10/27 Python
python 写的一个爬虫程序源码
2016/02/28 Python
破解安装Pycharm的方法
2018/10/19 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
2019/05/16 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
2019/06/21 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
HTML5中的Article和Section元素认识及使用
2013/03/22 HTML / CSS
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
Speedo速比涛德国官方网站:世界领先的泳装品牌
2019/08/26 全球购物
篝火晚会主持词
2014/03/25 职场文书
红旗渠导游词
2015/02/09 职场文书
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android
Python 图片添加美颜效果
2022/04/28 Python