php登录实例代码:用户名与密码验证器_PHP教程
教程Tag:暂无Tag,欢迎添加,赚取U币!
推荐:php类:注册与自动加载工程目录如下: 1、将需要注册的类放在一个数组中 ?phpfinal class Utils { private function __construct() { } public static function getClasses($pre_path = '/') { $classes = array( 'DBConfig' = $pre_path.'DBConfig/DBConfig.php', 'User' = $pre_path.'Mode
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>"; }
分享:php代码:循环跳出问题//php当前循环为1,循环由里到外依次递增,break默认为1,例如跳出第2层循环for ($i=0;$i3;$i++){ foreach (array(1,2,3) as $val){ foreach (array(1,2,3) as $val){ echo "1层循环br/"; break 2; //跳出第2层循环 } echo "2层循环br/"; } echo "3层循环br/";}//结果
相关PHP教程:
- 相关链接:
- 教程说明:
PHP教程-php登录实例代码:用户名与密码验证器。