同福

做个用户管理系统(11)——用户模块user之添加用户和用户身份认证的实现【20201127】

介绍

介绍

今天我们来建立TFUMS的第一个模块用户模块user,然后在这个模块里面实现添加用户和用户身份认证两个基础功能。

添加用户就是向user表插入一条数据,只不过插入之前需要通过查询语句检查用户名是否已经被其他人使用了,因为用户名userName是约束键,就是说用户名userName不能有重复的情况。

用户身份认证最简单的做法就是根据用户提交用户名在user表里查询对应的数据记录,如果找到了再使用数据库里存储的密码和用户提交的密码进行比较,如果密码校验通过了就表示认证成功了。

用户模块

用户模块user是一个主要模块,福哥把它保存在了WEB-INF/Model/user.inc.php里面了。用户模块user继承自框架模块对象TFModel,唯一的构造器参数就是TFPHP全局对象实例。

7b25908ffae7dd34.jpg这里建立了4个常量,用来表示用户身份码和状态码。

添加用户

代码

/**
 * note:
 *   1 - user name is used
 *   2 - exception
 *
 * @param string $user
 * @param string $pwd
 * @return int
 */
public function add(string $user, string $pwd){
    $tfdo = $this->tfphp->getDatabase()->getTFDO();
    $userInfo = $tfdo->fetchOne("select * from user where userName = @str", $user);
    if($userInfo != null){

        return 1;
    }

    $ret = $tfdo->insert("user", array(
        'userName'=>$user,
        'passwd'=>md5($pwd),
        'createDT'=>date("Y-m-d H:i:s"),
        'userFlag'=>user::T_FLAG_NORMAL,
        'userState'=>user::T_STATE_NORMAL,
    ));
    if(!$ret){

        return 2;
    }

    return 0;
}

用户身份认证

代码

/**
 * note:
 *   1 - user is not exists
 *   2 - password is incorrectly
 *   3 - user is locked
 *
 * @param string $user
 * @param string $pwd
 * @param bool $remember
 * @return int
 */
public function auth(string $user, string $pwd):int {
    $tfdo = $this->tfphp->getDatabase()->getTFDO();
    $userInfo = $tfdo->fetchOne("select * from user where userName = @str", $user);
    if($userInfo == null){

        return 1;
    }

    if($userInfo['passwd'] == md5($pwd)){

        return 2;
    }

    if($userInfo['userState'] != user::T_STATE_NORMAL){

        return 3;
    }

    return 0;
}

讲解

添加用户

首先通过tfphp对象拿到一个TFDO实例,它用来操作MySQL数据库。

接着通过fetchOne方法查询user表内是否存在userName等于准备添加的用户名,如果有则报错。

然后使用insert方法向user表写入一条数据,该数据作为新用户的基础数据,如果写入失败则报错。

如果一切顺利就返回0,表示函数执行成功了。

用户身份认证

首先通过tfphp对象拿到一个TFDO实例,它用来操作MySQL数据库。

接着通过fetchOne方法查询user表内是否存在userName等于准备认证的用户名,如果没有就报错。

然后从返回的用户数据数组里面取出passwd字段,该字段保存着使用MD5哈希算法加密的密码,我们将认证传入的密码也通过MD5哈希算法加密,然后比较两个密文密码是否一样,不一样就报错。

再来从返回的用户数据数组里面取出userState字段,该字段表示用户的状态,只有userState为1才是正常状态,否则就报错。

通过一系列检查后,认证通过了,把状态0返回出来。

总结

今天福哥带着童鞋们完成了用户模块user的添加用户和用户身份认证两个功能,有了添加用户功能就可以开发用户注册功能了,而又了用户身份认证功能就可以实现用户登录功能了。

下一课,福哥将带着大家开发用户注册功能,敬请期待~~