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上传文件模板)代码
12345678910 | $( function () { $( '#file_upload' ).uploadify({ 'formData'
'<{:session_name()}>'
'<{:session_id()}>' , //此处获取SESSIONID 'timestamp'
'<{$timestamp}>' , 'token'
'<{$token}>' } //后边对于解决本问题无关代码省略。。。 }) } |
服务器端(ThinkPHP控制器)代码
1234567891011 | //初始化执行 public _initialize(){ //此处为解决Uploadify在火狐下出现http 302错误 重新设置SESSION $session_name
if
$_POST [ $session_name ])) { session_id( $_POST [ $session_name ]); session_start(); } //执行登陆验证检测函数 $this ->powerverify(); } |