首页 » Ecshop » Ecshop登录机制之变量$user详解

Ecshop登录机制之变量$user详解

7041 5

今天在改测试站的第三方登陆时,发现user.php下有个$user->check_user($info[‘name’])的方法来判断数据库里是否有重名,该函数通过用户名来查询是否user_id已存在,存在则函数返回user_id。看到这,感觉$user应该是一个obj,于是不得不弄清一下$user这个变量的来源。

先全站搜索内容为”class user”,结果木有找到,接着尝试搜索”function check_user”,出来一大堆文件,一个一个找来,发现是在includes\modules\integrates\integrate.php找到它的定义,

class integrate
{
...
 function check_user($username, $password = null)
    {

        $post_username = $username;

        /* 如果没有定义密码则只检查用户名 */
        if ($password === null)
        {
            $sql = "SELECT " . $this->field_id .
                   " FROM " . $this->table($this->user_table).
                   " WHERE " . $this->field_name . "='" . $post_username . "'";

            return $this->db->getOne($sql);
        }
        else
        {
            $sql = "SELECT " . $this->field_id .
                   " FROM " . $this->table($this->user_table).
                   " WHERE " . $this->field_name . "='" . $post_username . "' AND " . $this->field_pass . " ='" . $this->compile_password(array('password'=>$password)) . "'";

            return  $this->db->getOne($sql);
        }
    }

然后退过来发现同目录下有ecshop.php文件继承了这个类。

require_once(ROOT_PATH . 'includes/modules/integrates/integrate.php');
class ecshop extends integrate
{
...
}

并且同目录下还有discuz55.php,dvbbs.php,phpbb.php,ucenter.php等文件,那么到这里就很明显了,ecshop登录的时候检查后台是否设置了用户整合功能,如果没有设置,则调用这里的ecshop.php来管理登录,如果有设置了用户整合,则调用这里相应的整合对象的php,从而进行用户登录管理。

看到这,有些人可能要问,$user和这里的integrate又有个毛关系啊,不急,再看下user.php里头部include的文件include/init.php。这个文件也是大多ecshop都要调用的,发现里面有一行,

$user =& init_users();

最后在/include/lib_common.php里发现如下行,

/**
 * 初始化会员数据整合类
 *
 * @access  public
 * @return  object
 */
function &init_users()
{
    $set_modules = false;
    static $cls = null;
    if ($cls != null)
    {
        return $cls;
    }
    include_once(ROOT_PATH . 'include/modules/integrates/' . $GLOBALS['_CFG']['integrate_code'] . '.php');
    $cfg = unserialize($GLOBALS['_CFG']['integrate_config']);
    $cls = new $GLOBALS['_CFG']['integrate_code']($cfg);

    return $cls;
}

好了,结束。什么?看不懂?拜拜了您!

文章评分2次,平均分5.0

本文原始地址:https://www.tiandiyoyo.com/2014/10/what-is-variables-user-in-ecshop/
本站所有文章,除了特别注明外,均为本站原创,转载请注明出处来自www.tiandiyoyo.com

您可能还会对以下文章感兴趣:

评论前先开启评论开关:


5 Comments

  1. zaing :

    最近刚好在弄ecshop登录这块,您这篇文章太有用了,感谢分享~

  2. 郑永 :

    你还开网店啊?

  3. 这个必须支持啊~
    沙发,学习了,感谢分享。

载入分页评论...