php 登录时用户名与密码验证器
2012-12-27 08:30
495 查看
1、登录时对用户输入的用户名、密码进行验证
Error是自己写的一个类:
2、调用验证器进行验证
<?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>"; }
相关文章推荐
- PHP验证登录用户名和密码
- PHP验证mysql登录用户名和密码
- PHP验证登录用户名和密码
- PHP验证登录用户名和密码
- PHP登录对用户名、密码进行验证及登录状态操作
- php登录验证(包括用户名、密码、验证码、数据库、是否已登陆验证、自动登录和注销登录)
- PHP验证登录用户名和密码
- PHP验证登录用户名和密码
- PHP验证登录用户名和密码
- PHP验证登录用户名和密码
- php 登录时用户名与密码验证器
- PHP验证登录用户名和密码
- PHP验证登录用户名和密码
- 登录用户名和密码的验证
- QuickCSharp框架开发(18)------加密用户名和密码数据与数据库读出的密码进行哈希比较(验证用户是否成功登录)
- PHP——登录时用户名密码区分大小写设置(binary)
- php验证用户名是否以字母开头与验证密码实例
- 1 完成登录页面(到记事本文件进行密码和用户名的验证)。 2 完成 用户注册页面(将注册信息显示在本页面 div 中)。
- 利用SQLite数据库进行用户名、密码的注册和登录验证
- PHP学习-验证用户名密码