Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[已解决] 用其他的用户数据库登录discuz的问题

[复制链接]
cui_feng89 发表于 2014-5-15 14:46:18 | 显示全部楼层 |阅读模式
本帖最后由 cui_feng89 于 2014-5-15 15:11 编辑

        我是个菜鸟,刚接触discuz,已经有一个门户网站,有独立的mysql用户数据库,不能修改,只能通过接口访问,php我还不知道怎么访问接口。。。里面的字段名跟discuz用户表肯定是不同的,现在想把已经有的数据库跟discuz整合,在discuz上能正常登录。                网上说的方法是,先在那个已经有的数据库里,验证用户是否合法,如果合法,查询ucenter中是否有此用户,如果有该用户,更新该用户的密码,如果没有,插入该用户的信息。我想问的是,这种思路应该没有问题吧,如果可以的话,下边的代码,填写接口那里,能不能举个例子说一下应该是长什么样的。。。或者还有没有别的方法实现,需要改那些文件呢。。。具体方法代码如下:


  1. 修改source/class/class_memeber.php文件中on_login() 函数:

  2. $result = userlogin($_GET['username'], $_GET['password'], $_GET['questionid'], $_GET['answer'], $this->setting['autoidselect'] ? 'auto' : $_GET['loginfield'], $_G['clientip']);
  3. 之前添加
  4. sys_login($_GET['username'],$_GET['password']);
  5. 将sys_login()函数添加到source/function/function_core.php中,sys_login()函数的代码具体如下:
  6. function sys_login($username,$password){
  7.     //判断登录用户是否在主库中存在
  8.     $ch = curl_init();
  9.     $curl_url = "";//填写你要访问的接口,你要验证数据的接口,将$username,$password传过去验证
  10.     curl_setopt($ch, CURLOPT_URL, $curl_url);
  11.     curl_setopt($ch, CURLOPT_POST, 1);
  12.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//不直接输出,返回到变量
  13.     $curl_result = curl_exec($ch);
  14.     $result = $curl_result;
  15.     curl_close($ch);
  16.     $result_arr = ( json_decode($result, true));
  17.     //如果主库存在,判断返回的uid在ucenter_member中是否存在,如果ucenter中存在,按照uid将username,password更新
  18.     if($result_arr['result'] == 1){//如果访问接口返回值为1,则表明主库中存在此用户
  19.         $query = DB::query("SELECT * FROM pre_ucenter_members where username='".$username."'");
  20.         $salt = rand(100000, 999999);
  21.         $pwd = md5(md5($password).$salt);
  22.         if(DB::num_rows($query) == 0){
  23.             $email = "";//填写从接口返回的邮箱信息,如果接口没有提供返回此数据的信息,可以留空
  24.             DB::query("insert into pre_ucenter_members(username,password,email,salt) values('".$username."','".$pwd."','".$email."','".$salt."') ");
  25.             $uid = mysql_insert_id();
  26.             DB::query("INSERT INTO pre_ucenter_memberfields(uid) values('$uid')");
  27.             
  28.         }else{
  29.             //如果在ucenter中找到了该用户的信息,为了防止用户已经修改了密码,所以在查找到用户信息的时候,对其用户信息进行更新,主要是更新密码
  30.             DB::query("update pre_ucenter_members set password='".$pwd."',salt='".$salt."' where username='".$username."'");
  31.         }
  32.         //print_r($query);exit;
  33.     }else{
  34.         return;
  35.     }
  36. }
复制代码

补充,刚又查了一下以前的帖子,说是整合UC?具体应该怎么弄呢,不是用的现成的织梦、帝国那些。。。


baxter 发表于 2014-5-15 21:16:15 | 显示全部楼层
UCenter 应用开发简略指南
https://discuz.dismall.com/thread-909678-1-1.html
UCenter 接口开发手册下载
https://discuz.dismall.com/thread-879237-1-1.html
回复

使用道具 举报

 楼主| cui_feng89 发表于 2014-5-16 09:59:48 | 显示全部楼层
baxter 发表于 2014-5-15 21:16
UCenter 应用开发简略指南
https://discuz.dismall.com/thread-909678-1-1.html
UCenter 接口开发手册下载

谢谢~6个字
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-28 06:38 , Processed in 0.022948 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表