加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php登录案例代码用户名与密码验证器

发布时间:2022-07-09 06:02:59 所属栏目:PHP教程 来源:互联网
导读:php登录实例代码:用户名与密码验证器 1、登录时对用户输入的用户名、密码进行验证 ?php /** * Validator for Login. */final class LoginValidator { private function __construct() { } /** * Validate the given username and password. * @param $userna
  php登录实例代码:用户名与密码验证器

  1、登录时对用户输入的用户名、密码进行验证
 
  <?php /** * Validator for Login. */final class LoginValidator {     private function __construct() {             }     /**     * Validate the given username and password.     * @param $username and $password to be validated     * @return array array of {@link Error} s     */    public static function validate($username, $password) {        $errors = array();        $username = trim($username);        if (!$username) {            $errors[] = new Error('username', '用户名不能为空。');        } elseif (strlen($username)<3) {            $errors[] = new Error('username', '用户名长度不能小于3个字符。');        } elseif (strlen($username)>30) {            $errors[] = new Error('username', '用户名长度不能超过30个字符。');        } elseif (!preg_match('/^[A-Za-z]+$/',substr($username, 0, 1))) {            $errors[] = new Error('username', '用户名必须以字母开头。');        } elseif (!preg_match('/^[A-Za-z0-9_]+$/', $username)) {            $errors[] = new Error('username', '用户名只能是字母、数字以及下划线( _ )的组合。');        } elseif (!trim($password)) {            $errors[] = new Error('password', '密码不能为空。');        } else {            // check whether use exists or not            $dao = new UserDao();            $user = $dao->findByName($username);             if ($user) {                if (!($user->getPassword() == sha1($user->getSalt() . $password))) {                    $errors[] = new Error('password', '用户名或密码错误。');                }            } else {                $errors[] = new Error('username', '用户名不存在。');            }        }        return $errors;    }} ?>
  Error是自己写的一个类:
 
  <?php /** * Validation error. */final class Error {     private $source;    private $message;      /**     * Create new error.     * @param mixed $source source of the error     * @param string $message error message     */    function __construct($source, $message) {        $this->source = $source;        $this->message = $message;    }     /**     * Get source of the error.     * @return mixed source of the error     */    public function getSource() {        return $this->source;    }     /**     * Get error message.     * @return string error message     */    public function getMessage() {        return $this->message;    } } ?>
 
     2、调用验证器进行验证
 
  $username = null;$password = null; $msg = ""; if (isset($_POST['username']) && isset($_POST['password'])) {    $username = addslashes(trim(stripslashes($_POST ['username'])));    $password = addslashes(trim(stripslashes($_POST ['password'])));    // validate    $errors = LoginValidator::validate($username, $password);         if (empty($errors)) {        // save the latest ip or login time into database, then processing page forwarding        $dao = new UserDao();        $user = $dao->findByName($username);        $last_login_ip = Utils::getIpAddress();        $user->setLastLoginIp($last_login_ip);        $now = new DateTime();        $user->setLastLoginTime($now);        $dao->save($user);        UserLogin::setUserInfo($user);        Flash::addFlash('登录成功!');        Utils::redirect('welcome');    }         foreach ($errors as $e) {        $msg .= $e->getMessage()."<br>";    }
 

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!