时间:2021-07-01 10:21:17 帮助过:7人阅读
客户端(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错误的解决方法,希望对大家的学习有所帮助。