Home  >  Article  >  Backend Development  >  uploadify 火狐下上传不成功,错误提示没有session

uploadify 火狐下上传不成功,错误提示没有session

WBOY
WBOYOriginal
2016-06-06 20:21:191218browse

<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>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn