修改discuz兼容自己开发的通行证
来源:asp之家 发布时间:2009-07-12 18:43:00
修改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() 函数里面直接切入就可以了。
猜你喜欢
- 之前报道中苹果Mac OS X 10.6.2 Beta版系统无法在基于Intel Atom的PC平台上安装使用,让大家对Mac OS X是否
- Google和百度对Description态度不同,Google黑板报和中文网站管理员博客发表了一篇翻译自去年的文章:使用更好的元描述来改善
- 北京时间12月3日消息,据国外媒体报道,MySpace音乐(MySpace Music)将于当地时间周四登陆英国。MySpace Music
- VMwarea的安装过程就不演示了,主要看看如何装入win7镜像1、下载win7镜像链接: https://pan.baidu.com/s/
- docker将jar包构建成镜像并执行1.编写Dockerfile文件????FROM java:latest????ADD Aeureka
- 选择服务器是一项重大决策,通常费时费钱。错误的决策会导致不良后果。在本文中,我们将首先谈谈一些在规划时需考虑的问题,然后进一步讨论如何在Wi
- 核心提示: 2.0的疲势在于盈利模式的不清晰,盈利模式的不清晰,又在于它没有一张清晰的脸,也就是首页。web2.0,有如digg、delic
- 今天在使用Virtualbox中的Ubuntu虚拟机,想安装增强功能来实现更改分辨率,但是在安装时出错:未能加载虚拟光驱 VBoxsGues
- 又是一个黎明的到来,我已经数不清有多少个这样的黎明是在我坐在电脑面前来临的。仔细一想,我进入站长这圈子已经有1年多了。 
- 很多朋友都碰到过这样的现象:打开一个网站,结果页面还没显示,杀毒软件就开始报警,提示检测到木马病毒。有经验的朋友会知道这是网页恶意代码,但是
- 如果采用root账号登录编辑/etc/bashrc内容,那所有其他帐号登录都会提示相同的内容,如果想每个用户进行配置,那就去每个帐号的目录下
- 昨天,WebLeOn说“国内好的企业博客屈指可数”,的确。这让我觉得有必要把这个案例分享给大家,之前吕欣欣同学曾一度让我总结个案例给他,无奈
- 初学Linux,首先需要弄清Linux 标准目录结构/root --- 启动Linux时使用的一些核心文件。如操作系统内核、引导程序Grub
- 做国外网络赚钱,很多新手都会面临一个如何拿到钱的问题,今天我就对此做个基础知识介绍教程。一般国外联盟主流采用支票,paypal,电汇,西联等
- 要想从事网络游戏运营服务,就必须经过“互联网出版许可证”这第一道准入门槛。这是新闻出版总署、国家版权
- 11月20日、21日纵贯线“钟爱一生”北京首体演唱会已经进入倒计时。作为世界巡演的收官站,北京演唱会票房频频告捷。笔者了解到,为了求得一张门
- 北京时间10月23日消息,巨人网络今年的战略新品《绿色征途》今日正式启动封测。巨人网络董事长兼CEO史玉柱表示,该游戏是其对免费网游进行两年
- 首先在Idea中选择编辑运行配置,如下图左上角的“+”号,选择Tomcat服务,如下图自定义服务名称
- 经常听到读计算机专业学生,毕业之后发出感叹:“我在大学什么也没学到,现在计算机的东西都不会!”。就其原因来看,不外乎是其一,学生自身原因。有
- Apahce服务器是一个稳定的、商业性的和公开程序源代码的HTTP服务器。其在HTTP市场中占有主导性的地位。据权威部门统计,Apache服