打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
php 登录时用户名与密码验证器

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>";    }
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
UCHome 关于用户注册页面的代码分析
数据库显示密码不符合要求时,validate_password插件
struts2学习笔记(2)——简单的输入验证以及标签库的运用
html:errors简析 - 雅典之夏的小站 - BlogJava
MVC构架(3)
jquery?validate?使用示范
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服