解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的
最近用ThinkPHP开发一个项目,集成了批量上传文件插件Uploadify,在谷歌Chrome和IE下都能正常上传,只有火狐下提示这个错误,网上找了很多解决办法,基本都说flash在firefox下重新发起session会话,由于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(){}(在执行其他方法前会先执行这个函数,我用它来判断用户是否登录),在这个函数中,我照网上的方法: var session_name = (使用Jquery通过选择器获取得到值) var session_id = (同上); formData: {session_name, session_id}, 其他解决思路:这个问题确实存在,其实这个问题可以转化为session丢失。虽然您针对session进行了特殊处理,作为参数传入,但是不代表您服务端正确获取,建议您进入debug模式跟踪一下服务器端是否正确获取参数,并顺利加载session。另外还有个问题,如果您当前打开url与您提交form的url是一样的,还得记得加上随机数。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |