同福

做个用户管理系统(12)——用户模块user之设置绑定邮箱和修改密码的实现【20201128】

介绍

介绍

今天福哥带着大家来实现用户模块user的设置绑定邮箱和修改密码功能。

设置绑定邮箱属性修改数据库操作,所以在修改之前需要检查目标数据记录是不是存在。由于绑定邮箱是不能够有重复的,所以还要检查这个准备写入的邮箱地址是不是被其他人使用了。最后就是通过update方法更新绑定邮箱字段了。

修改密码功能也属于修改数据库操作,在修改之前也需要检查目标数据记录是不是存在。为了避免密码在用户不在电脑前面的时候被其他人修改成了新密码,我们需要校验当前密码。如果用户可以提供正确的当前密码,就可以通过update方法更新密码字段了。

设置绑定邮箱

代码

/**
 * note:
 *   1 - user is not exists
 *   2 - email is used
 *   3 - exception
 *
 * @param int $userID
 * @param string $email
 * @return bool
 */
public function bindEmail(int $userID, string $email):bool {
    $tfdo = $this->tfphp->getDatabase()->getTFDO();
    $userInfo = $tfdo->fetchOne("select * from user where userID = @int", $userID);
    if($userInfo == null){

        return 1;
    }

    $userInfo = $tfdo->fetchOne("select * from user where userEmail = @str and userID <> @int", $email, $userID);
    if($userInfo != null){

        return 2;
    }

    $ret = $tfdo->update("user", array(
        'userEmail'=>$email
    ), null, "userID = @int", array(
        $userID
    ));
    if(!$ret){

        return 3;
    }

    return 0;
}

修改密码

代码

/**
 * note:
 *   1 - user is not exists
 *   2 - current password is incorrectly
 *   3 - exception
 *
 * @param int $userID
 * @param string $currPwd
 * @param string $newPwd
 * @return bool
 */
public function passwd(int $userID, string $currPwd, string $newPwd):bool {
    $tfdo = $this->tfphp->getDatabase()->getTFDO();
    $userInfo = $tfdo->fetchOne("select * from user where userID = @int", $userID);
    if($userInfo == null){

        return 1;
    }

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

        return 2;
    }

    $ret = $tfdo->update("user", array(
        'passwd'=>md5($newPwd)
    ), null, "userID = @int", array(
        $userID
    ));
    if(!$ret){

        return 3;
    }

    return 0;
}

讲解

设置绑定邮箱

首先通过$userID取出当前用户的信息,如果取不到,就报错。

接着判断非当前$userID的用户信息里包含$email的数据记录是否存在,如果存在,就报错。

最后更新当前$userID的用户信息里的userEmail字段为$email。

修改密码

首先通过$userID取出当前用户的信息,如果取不到,就报错。

接着判断当前$userID的用户信息里的passwd和经过MD5哈希过的$currPwd是不是一样,不一样,就报错。

最后更新当前$userID的用户信息里的passwd字段为经过MD5哈希过的$newPwd。

总结

今天童鞋们跟着福哥实现了用户模块user的设置绑定邮箱和修改密码功能,大家可以看出来只要思路正确,代码还是很简单的。

下一课我们将要实现设置安全问题和修改个人资料的功能了。