千家信息网

如何解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的问题

发表于:2025-02-21 作者:千家信息网编辑
千家信息网最后更新 2025年02月21日,这篇文章主要介绍了如何解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小
千家信息网最后更新 2025年02月21日如何解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的问题

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

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

$(function() {   $('#file_upload').uploadify({    'formData' : {     '<{:session_name()}>': '<{:session_id()}>',//此处获取SESSIONID     'timestamp': '<{$timestamp}>',     'token' : '<{$token}>'    }     //后边对于解决本问题无关代码省略。。。    })}

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

//初始化执行 publicfunction _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浏览器firefox报302错误的问题"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

问题 函数 验证 错误 登陆 代码 控制器 控制 参数 文件 火狐 用户 篇文章 插件 浏览器 浏览 方法 服务 可以通过 同时 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库自启动命令 佛山网球软件开发 网络安全法要求成立领导小组 蓬溪2020年外贸数据库系统 安装数据库实例名是什么 学校信息管理系统数据库表 网络安全法最新对比 北京百卓网络技术公司怎么样 软件开发市场黄潇枫 第三届国家网络安全周 速达财务软件怎么导出数据库 电脑软件开发专业学校排名 数据库独立 智慧运维管理平台数据库设计 深信服超融合服务器传文件 电商系统软件开发企业 腾讯软件开发工程师面试题 ibm服务器联想 中山数字软件开发维修电话 数据库的逻辑模型分为哪几类 网络安全法最新对比 c s架构的软件开发流程图 软件开发在大公司怎样上升 服务器虚拟化论文 网络技术服务中心面试题 服务器cpu排行版 南京航空航天大学软件开发方法 我的世界服务器欢迎新人提示指令 宣化安卓软件开发 软件开发团队如何带新人
0