网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > PHP > 正文
Discuz中的同步登录
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/12/10
下载{$ArticleTitle}原创论文样式

编辑提示:Discuz中的同步登录,意思很明白了,那它是如何实现的呢?

依附于Discuz UCenter的子应用都会有一个选项:

Discuz中的同步登录 

意思很明白了,那它是如何实现的呢?

UC/Control/user.PHP中有一个onsynlogin方法,这里就是处理同步登录的。

function onsynlogin() {  
        $this->init_input();  
        $uid = $this->input(''uid'');  
        if($this->app[''synlogin'']) {  
            if($this->user = Discuz中的同步登录_网学

浏览:
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号
ENV[''user'']->get_user_by_uid($uid)) {  
                $synstr = '''';  
                foreach($this->cache[''apps''] as $appid => $app) {  
                    if($app[''synlogin''] && $app[''appid''] != $this->app[''appid'']) {  
                        $synstr .= ''<script type="text/JavaScript" src="''.$app[''url''].''/api/uc.php?time=''.$this->time.''&code=''.urlencode($this->authcode(''action=synlogin&username=''.$this->user[''username''].''&uid=''.$this->user[''uid''].''&password=''.$this->user[''password'']."&time=".$this->time, ''ENCODE'', $app[''authkey''])).''" reload="1"></script>'';  
                    }  
                }  
                return $synstr;  
            }  
        }  
        return '''';  
    } 

当调用该方法时,实际上会去调用该应用下api/uc.php文件,将用户名、密码及时间戳做为参数传递。
以上是实现的第一步。

第二步,当应用接收到UC的请求后,会调用uc_note类中的synlogin方法,该方法的核心是送一个P3P的HTTP头,然后种下COOKIE。

$discuz_auth_key = md5( Discuz中的同步登录_网学

浏览:
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号
DCACHE[''settings''][''authkey'']. Discuz中的同步登录_网学
浏览:
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号
SERVER[''HTTP_USER_AGENT'']);  
        header(''P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'');  
        $uid = intval($uid);  
        $query = $this->db->query("SELECT username, uid, password, secques FROM ".$this->tablepre."members WHERE uid=''$uid''");  
        if($member = $this->db->fetch_array($query)) {  
            _setcookie(''sid'', '''', -86400 * 365);  
            _setcookie(''cookietime'', $cookietime, 31536000);  
            _setcookie(''auth'', _authcode("$member[password]\t$member[secques]\t$member[uid]", ''ENCODE'', $discuz_auth_key), $cookietime);  
        } else {  
            _setcookie(''cookietime'', $cookietime, 31536000);  
            _setcookie(''loginuser'', $username, $cookietime);  
            _setcookie(''activationauth'', _authcode($username, ''ENCODE'', $discuz_auth_key), $cookietime);  
        } 

对于Disucz这种基于COOKIE验证的应用来说,就实现了同步登录。

(责任编辑:admin)

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号