当前位置:Gxlcms > PHP教程 > uploadify火狐下上传不成功,错误提示没有session

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

时间:2021-07-01 10:21:17 帮助过:3人阅读

用的thinkphp框架,刚去tp讨论看了好多,尝试了一下都不行。
不太理解到底怎样才算是通过登录验证了。

    public function _initialize(){
        
        // 验证用户是否登陆
        if (!session('?name') or !session('?dutydate')) {
            $this->error('未登录,跳转到登录页面',__MODULE__.'/login/index',3);
        }
        
    }
    

看了一篇这样的文章(http://www.edbiji.com/doccenter/showdoc/54/nav/702.html),情况跟我一样,我不太明白,他这篇文章服务端代码这样写的意义是什么?

//初始化执行
    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();        
    }

我的是这样的,我只判断session('name') 和 session('dutydate'),
那如果我要接受uploadify,post过来的值。$_POST['test],这就是我当前的session了
我按照文章的意思写,但是我觉得没有任何意义啊?搞不懂这块是什么意思?

    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);
        }
        
    }

有空的大神,帮忙看下,调试好久了,还是不行,烟都抽完了。。。。

回复内容:

用的thinkphp框架,刚去tp讨论看了好多,尝试了一下都不行。
不太理解到底怎样才算是通过登录验证了。

    public function _initialize(){
        
        // 验证用户是否登陆
        if (!session('?name') or !session('?dutydate')) {
            $this->error('未登录,跳转到登录页面',__MODULE__.'/login/index',3);
        }
        
    }
    

看了一篇这样的文章(http://www.edbiji.com/doccenter/showdoc/54/nav/702.html),情况跟我一样,我不太明白,他这篇文章服务端代码这样写的意义是什么?

//初始化执行
    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();        
    }

我的是这样的,我只判断session('name') 和 session('dutydate'),
那如果我要接受uploadify,post过来的值。$_POST['test],这就是我当前的session了
我按照文章的意思写,但是我觉得没有任何意义啊?搞不懂这块是什么意思?

    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);
        }
        
    }

有空的大神,帮忙看下,调试好久了,还是不行,烟都抽完了。。。。

火狐在用uploadify的时候确实有问题,这是因为火狐的flash无法传递当前域的cookie,官方文档上对这个问题有解决方案。
跟你的代码处理方式类似。
将 session_id 放在url或者post请求中传过去,如果请求中有相关值则使用这个值生成session,否则就使用cookie中的值来获取session。

通过 session_id 获取当前用户session,请求接收后再用 session_id 指定用户session再start
大概如下:

//上传前
$auth = session_id();
//传输该值

//指定session
if(!empty($_POST['auth'])){
    session_id($_POST['auth']);
    session_start();
}else{
    session_start();
}

人气教程排行