解决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 相关文章推荐
对Session和Cookie的区分与解释
Mar 16 PHP
PHP数据库链接类(PDO+Access)实例分享
Dec 05 PHP
浅谈php扩展imagick
Jun 02 PHP
CI(CodeIgniter)框架中的增删改查操作
Jun 10 PHP
php生成RSS订阅的方法
Feb 13 PHP
php校验表单检测字段是否为空的方法
Mar 20 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
Jul 31 PHP
微信红包随机生成算法php版
Jul 21 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
Apr 01 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
Feb 15 PHP
在Laravel中使用MongoDB的方法示例
Nov 11 PHP
discuz论坛更换域名,详细文件修改步骤
Dec 09 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
3
2006/10/09 PHP
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
高效率JavaScript编写技巧整理
2013/08/23 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
2017/05/17 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
vue框架下部署上线后刷新报404问题的解决方案(推荐)
2019/04/03 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
python实现Flappy Bird源码
2018/12/24 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
tensorflow 保存模型和取出中间权重例子
2020/01/24 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
如何用python处理excel表格
2020/06/09 Python
python实现斗地主分牌洗牌
2020/06/22 Python
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
财务人员个人求职信范文
2013/12/04 职场文书
大学生村官典型材料
2014/01/12 职场文书
小学三年级数学教学反思
2014/01/31 职场文书
《最后的姿势》教学反思
2014/02/27 职场文书
医院党员公开承诺书
2014/08/30 职场文书
总经理岗位职责
2015/02/04 职场文书
房地产销售员岗位职责
2015/04/11 职场文书
2015企业年终工作总结范文
2015/05/27 职场文书