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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[疑难] 请教一下UCHome的密码

[复制链接]
bsback 发表于 2009-10-24 13:17:00 | 显示全部楼层 |阅读模式
UCHome模板
适用版本: UCHome 2.0
语言编码:  
风格转换者:
我想单独通过php文件来验证用户的登录,就是输入账号密码然后查询数据库中验证是否正确,脱离现有UChome的程序。
但是我发现UCHome的用户数据库里面的密码都是经过了加密的,所以想请教一下各位我怎样才可以验证密码,最好有PHP代码,多谢!
philicks 发表于 2009-10-24 13:26:53 | 显示全部楼层
你也把你的密码先加密再和库里的比较就好了
回复

使用道具 举报

ken990941 发表于 2009-10-24 14:04:55 | 显示全部楼层
路过。。。。
回复

使用道具 举报

 楼主| bsback 发表于 2009-10-24 17:09:53 | 显示全部楼层
你也把你的密码先加密再和库里的比较就好了
philicks 发表于 2009-10-24 13:26

应该怎么加密呢?
回复

使用道具 举报

philicks 发表于 2009-10-24 17:19:40 | 显示全部楼层
4# bsback


    'password' => md5("$passport[uid]|$_SGLOBAL[timestamp]")//本地密码随机生成

UCH加密方法,你把你的密码也按此方法加密,再和库里的比较
回复

使用道具 举报

asdwsxzxc 发表于 2009-10-24 17:22:27 | 显示全部楼层
目前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))
            ) {
回复

使用道具 举报

asdwsxzxc 发表于 2009-10-24 17:23:46 | 显示全部楼层
//开始更新会员资料
            $_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='',";
回复

使用道具 举报

 楼主| bsback 发表于 2009-10-24 22:15:53 | 显示全部楼层
bsback


    'password' => md5("$passport|$_SGLOBAL[timestamp]")//本地密码随机生成

UCH加密方 ...
philicks 发表于 2009-10-24 17:19



    $_SGLOBAL[timestamp]")
不能过脱离UCH的限制吗?我想单独写个PHP文件,和UCH没联系,只是连接数据库
回复

使用道具 举报

ucapp 发表于 2009-10-24 22:29:20 | 显示全部楼层
其实很容易的
链接uc_center的库,通过用户名查找uc_members数据表,获取用户信息($user)

  1. $passwrod = "用户输入的密码";
  2. $passwordmd5 = md5($passwrod);
  3. if($user['password'] == md5($passwordmd5.$user['salt'])){
  4.     echo 'success';
  5. }else{
  6.     echo 'fail';
  7. }
复制代码
回复

使用道具 举报

guokun 发表于 2009-10-24 22:29:58 | 显示全部楼层
帮顶下。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-19 00:36 , Processed in 0.026180 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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