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