网站运营
位置:首页>> 网站运营>> 修改discuz兼容自己开发的通行证

修改discuz兼容自己开发的通行证

 来源:asp之家 发布时间:2009-07-12 18:43:00 

标签:discuz,兼容,通行证

修改discuz,uchome,ucenter兼容自己开发的通行证

最近稍有接触,修改其中的部分代码,就贡献其中的关键部分吧。

目前discuz的会员注册是在discuz自己的体系中完成,然后post(或者mysql直接操作,此处以post代称)到ucenter的数据库,其中会员密码是md5(md5(真实密码)+首次随机字符sult),memberid由ucenter产生。然后得到改值,保存在discuz。

如果是自己已有通行证系统,产生id,保存密码这部分就在自己的系统完成,然后送回来到ucenter,然后保存到dizcuz。

在uc_center/client.php中加入代码

//cjjer
function uc_user_registerCjjer($uid,$username, $password, $email, $questionid = '', $answer = '') {

    return call_user_func(UC_API_FUNC, 'user', 'register', array('uid'=>$uid,'username'=>$username, 'password'=>$password, 'email'=>$email, 'questionid'=>$questionid, 'answer'=>$answer));
}
function uc_user_updateCjjer($uid,$username, $password, $email, $questionid = '', $answer = '') {
    return call_user_func(UC_API_FUNC, 'user', 'myupdate', array('uid'=>$uid,'username'=>$username, 'password'=>$password, 'email'=>$email, 'questionid'=>$questionid, 'answer'=>$answer));
}

注册的时候就用uc_user_registerCjjer。

在contol/user.php加入代码:

//    rewrite by cjjer

    function onregister() {
        $this->init_input();
        $username = $this->input('username');
        $myuserid = intval($this->input('uid'));
        $password =  $this->input('password');
        $email = $this->input('email');
        $questionid = $this->input('questionid');
        $answer = $this->input('answer');

        if(    (($status = $this->_check_username($username)) < 0) ||
            (($status = $this->_check_email($email)) < 0)||
            ($status = $_ENV['user']->get_user_by_uid($myuserid))
            ) {
            //开始更新会员资料
            $_ENV['user']->update_user($myuserid,$username, $password, $email, $myuserid, $questionid, $answer);
            return $myuserid;
        }else{
            $uid = $_ENV['user']->add_user($username, $password, $email, $myuserid, $questionid, $answer);
        }
        return $uid;
    }

    function onmyupdate() {
        $this->init_input();
        $username = $this->input('username');
        $myuserid = intval($this->input('uid'));
        $password =  $this->input('password');
        $email = $this->input('email');
        $questionid = $this->input('questionid');
        $answer = $this->input('answer');

        $status = $_ENV['user']->get_user_by_uid($myuserid);
        if(!$status) {
            return -1;
        }
        $uid = $_ENV['user']->update_user($myuserid,$username, $password, $email, $myuserid, $questionid, $answer);
        return $uid;
    }

然后在model/user.php加入



    function update_user($user_id,$username, $password, $email, $uid = 0, $questionid = '', $answer = '') {
        $salt = substr(uniqid(rand()), -6);
        $password = md5(md5($password).$salt);
        if(! $uid)return  0;
        $sqladd = $uid ? "uid='".intval($uid)."'," : '';
        $sqladd .= $questionid > 0 ? " secques='".$this->quescrypt($questionid, $answer)."'," : " secques='',";
        //不更新密码,,salt='$salt'
        $this->db->query("update ".UC_DBTABLEPRE."members SET   username='$username', email='$email' where uid='$uid'");

        return $user_id;
    }

修改其中的add_user方法为:

function add_user($username, $password, $email, $uid = 0, $questionid = '', $answer = '') {
        $salt = substr(uniqid(rand()), -6);
        $password = md5(md5($password).$salt);
        $sqladd = $uid ? "uid='".intval($uid)."'," : '';
        $sqladd .= $questionid > 0 ? " secques='".$this->quescrypt($questionid, $answer)."'," : " secques='',";
        $this->db->query("INSERT INTO ".UC_DBTABLEPRE."members SET $sqladd username='$username', password='$password', email='$email', regip='".$this->base->onlineip."', regdate='".$this->base->time."', salt='$salt'");
        $uid = $this->db->insert_id();
        $this->db->query("INSERT INTO ".UC_DBTABLEPRE."memberfields SET uid='$uid'");
        return $uid;
    }

这样,在uchome注册的用户就能自动映射到discuz,不需要激活。直接更新。

其中discuz系统的关键部分在include/common.inc.php里面的140行左右的验证用户登录的。这里切入即可。就是在产生$sid=$discuz_pw= $discuz_secques= $discuz_uid这几个变量的时候。包含自己的通行证,直接可以打通。

uchome在source/function_common.php这个function checkauth() 函数里面直接切入就可以了。

0
投稿

猜你喜欢

  • 在过去的一年里,受流氓/恶意软件感染的网站数目从每周几个增长到每周数千。在我们以前的帖子“关于恶意软件警告”以及“停止恶意软件讨论组”里,我
  • 子曰:三思而后行。意思就是说表示多次。指经过反复考虑,然后再去做。网页title对SEO越来越重要,这点相信大家应该都清楚,所以现在很多SE
  • 1、广告多放一点如果版面允许就多放几个广告,这样用户接触的广告多,自然点击就会多。2、内容丰富一点如果内容不够丰富可以匹配的广告就不会多,甚
  • Godaddy Linux主机帐户的免费软件您了解多少呢?我们的所有托管计划都含有一些免费的server-side applications
  • 很多站长认为做方向链接是一个很简单的事情,其实做方向链接也是有一定的原则的.seo其实就是从一点一滴多起的,当很多小处改变了之后,就形成了一
  • 做为一个新站,没IP,没PR,没排名,新站做几天最多也就被几大搜索引擎收录,不过没什么排名。就像我昨天做的网站: * 站。这时候你应该怎么
  • V5shop网络联盟系统:网商应突破平台壁垒 盈利为王最近,一些具有忧患意识的独立网商经常通过邮件或QQ向笔者咨询,归纳一下,问题基本集中在
  • 北京时间11月19日上午消息,网易今早公布2009财年第三季财报,管理层随后于9点举行分析师电话会议,网易CEO丁磊及代理CFO蔡安活参会并
  • 近日,DiscuzX2被爆出了两个0day,一个是SQL注入漏洞,攻击者可利用该漏洞获取到用户名与密码,另一个是XSS注入漏洞,攻击者可实现
  • 很多企业所有者发现Linux——曾被认为是“小众”的操作系统,可以提供很多可以依赖的组件和服务。Linux现在已经进入了世界最大的数据中心,
  • 如今,互联网将进入一个崭新的阶段,信息化的发展带动其它产业的发展,各行业都将与它进行更深入的融合和渗透。越来越多的企业已开始从对互联网的认知
  • 11月13日,支付宝“免费试用”频道赫然出现一台斯柯达昊锐汽车,网站表示,凡拥有驾照的上海或者浙江的支付宝用户,都可以申请用一周的时间来免费
  • 今天我赶着去参加一个聚会,最糟糕的是还有二十分钟会议便要开始了。我好不容易截到了一辆出租车,匆匆忙忙上车后,我对司机说:“麻烦你,我很赶时间
  • 为了实现图片防盗链,根据网络上搜集的资料加上自己的实践,终于实现了iis下的图片防盗链功能。服务器系统windows 2003 server
  • Windows2000 域名解析是基于动态DNS,动态DNS的实现是基于RFC 2136基础上的。在Windows 2000下,动态DNS是
  • 两年前,我曾经写过一篇文章《Google和百度收录网站页面的比较》(发布于2006年4月17日《计算机世界》),分析当时情况下百度和Goog
  • 前几日写了2010年可能会出现的一些常见的网络骗局,经过多日的思索,今天决定写剩下的那些骗局了。并不是因为不知道写什么,而且不知道要怎样写,
  • 声明:本人从一个对电脑什么都不懂的菜鸟,到今天从事IT工作的从业人员,除参加基本培训班学习基本的东西之外,其它基本上都是自学,写此文章的目的
  • 由于企业希望改进IT基础架构节省成本,所以CIO和数据中心管理人员都转向了通过合并服务器的方法以实现节省费用。其实,这么做并非易事。由于企业
  • 先来看一段引文:谷歌、雅虎和live search 宣布支持Link的一个新属性Canonical,为网页指定权威链(authoritati
手机版 网站运营 asp之家 www.aspxhome.com