介绍
介绍
今天福哥带着大家来实现用户模块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的设置绑定邮箱和修改密码功能,大家可以看出来只要思路正确,代码还是很简单的。
下一课我们将要实现设置安全问题和修改个人资料的功能了。