Maison >développement back-end >tutoriel php >uploadify 火狐下上传不成功,错误提示没有session
<code><script type="text/javascript"> $(function() { $('#file_upload').uploadify({ 'formData' : { 'test' : '{$Think.session.name}', //此处获取SESSIONID }, 'buttonText': '上传附件', 'fileTypeDesc': '可选文件', 'method' : 'post', 'auto' : true, //允许上传的文件后缀 'fileTypeExts': '*.gif; *.jpg', 'swf' : "__PUBLIC__" +'/uploadify/uploadify.swf', 'uploader' : "__MODULE__"+'/duty/fileup', 'onUploadSuccess': function (file, data, response) { console.log(file); console.log(data); console.log(response); } }); }); </script></code>
用的thinkphp框架,刚去tp讨论看了好多,尝试了一下都不行。
不太理解到底怎样才算是通过登录验证了。
<code> public function _initialize(){ // 验证用户是否登陆 if (!session('?name') or !session('?dutydate')) { $this->error('未登录,跳转到登录页面',__MODULE__.'/login/index',3); } } </code>
看了一篇这样的文章(http://www.edbiji.com/doccenter/showdoc/54/nav/702.html),情况跟我一样,我不太明白,他这篇文章服务端代码这样写的意义是什么?
<code>//初始化执行 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(); }</code>
我的是这样的,我只判断session('name') 和 session('dutydate'),
那如果我要接受uploadify,post过来的值。$_POST['test],这就是我当前的session了
我按照文章的意思写,但是我觉得没有任何意义啊?搞不懂这块是什么意思?
<code> public function _initialize(){ $session_name = $_POST['test']; if (isset($_POST[$session_name])) { session('name',$_POST[$session_name]); session('[start]'); } // 验证用户是否登陆 if (!session('?name') or !session('?dutydate')) { $this->error('未登录,跳转到登录页面',__MODULE__.'/login/index',3); } }</code>
有空的大神,帮忙看下,调试好久了,还是不行,烟都抽完了。。。。
<code><script type="text/javascript"> $(function() { $('#file_upload').uploadify({ 'formData' : { 'test' : '{$Think.session.name}', //此处获取SESSIONID }, 'buttonText': '上传附件', 'fileTypeDesc': '可选文件', 'method' : 'post', 'auto' : true, //允许上传的文件后缀 'fileTypeExts': '*.gif; *.jpg', 'swf' : "__PUBLIC__" +'/uploadify/uploadify.swf', 'uploader' : "__MODULE__"+'/duty/fileup', 'onUploadSuccess': function (file, data, response) { console.log(file); console.log(data); console.log(response); } }); }); </script></code>
用的thinkphp框架,刚去tp讨论看了好多,尝试了一下都不行。
不太理解到底怎样才算是通过登录验证了。
<code> public function _initialize(){ // 验证用户是否登陆 if (!session('?name') or !session('?dutydate')) { $this->error('未登录,跳转到登录页面',__MODULE__.'/login/index',3); } } </code>
看了一篇这样的文章(http://www.edbiji.com/doccenter/showdoc/54/nav/702.html),情况跟我一样,我不太明白,他这篇文章服务端代码这样写的意义是什么?
<code>//初始化执行 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(); }</code>
我的是这样的,我只判断session('name') 和 session('dutydate'),
那如果我要接受uploadify,post过来的值。$_POST['test],这就是我当前的session了
我按照文章的意思写,但是我觉得没有任何意义啊?搞不懂这块是什么意思?
<code> public function _initialize(){ $session_name = $_POST['test']; if (isset($_POST[$session_name])) { session('name',$_POST[$session_name]); session('[start]'); } // 验证用户是否登陆 if (!session('?name') or !session('?dutydate')) { $this->error('未登录,跳转到登录页面',__MODULE__.'/login/index',3); } }</code>
有空的大神,帮忙看下,调试好久了,还是不行,烟都抽完了。。。。
火狐在用uploadify的时候确实有问题,这是因为火狐的flash无法传递当前域的cookie,官方文档上对这个问题有解决方案。
跟你的代码处理方式类似。
将 session_id 放在url或者post请求中传过去,如果请求中有相关值则使用这个值生成session,否则就使用cookie中的值来获取session。
通过 session_id 获取当前用户session,请求接收后再用 session_id 指定用户session再start
大概如下:
<code>//上传前 $auth = session_id(); //传输该值 //指定session if(!empty($_POST['auth'])){ session_id($_POST['auth']); session_start(); }else{ session_start(); }</code>