打开APP
userphoto
未登录

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

开通VIP
php 注册时输入信息验证器

php 注册时输入信息验证器

1、对输入信息进行验证的类(主要用于验证用户名,密码,重复密码,邮箱,可添加其它功能)

<?php/** * Validator for Register. */final class RegisterValidator {    private function __construct() {            }    /**     * Validate the given username, password, repeat_password and email.     * @param $username, $password, $repeat_password and $email to be validated     * @return array array of {@link Error} s     */    public static function validate($username, $password, $repeat_password, $email) {        $errors = array();        $username = trim($username);        $password = trim($password);        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 (!$password) {            $errors[] = new Error('password', '密码不能为空。');        } elseif (strlen($password)<6) {            $errors[] = new Error('password', '密码长度不能小于6个字符。');        } elseif (strlen($password)>30) {            $errors[] = new Error('password', '密码长度不能超过30个字符。');        } elseif (!preg_match('/^[A-Za-z0-9!@#\\$%\\^&\\*_]+$/', $password)) {            $errors[] = new Error('password', '密码只能是数字、字母或!@#$%^&*_等字符的组合。');        } elseif ($password != trim($repeat_password)) {            $errors[] = new Error('password', '两次输入密码不一致。');        } elseif (!Utils::isValidEmail($email)) {            $errors[] = new Error('email', '邮箱格式有误。');        } else {            // check whether user exists or not            $dao = new UserDao();            $user = $dao->findByName(trim($username));            if ($user) {                $errors[] = new Error('username', '该用户名已经被使用。');            }                        $user = null;            // check whether email being used or not            $user = $dao->findByEmail(trim($email));            if ($user) {                $errors[] = new Error('email', '该邮箱已被注册。');            }        }        return $errors;    }}?>

2、在注册页面进行调用

$username = null;$password = null;$repeat_password = null;$email = null;$msg = "";if (isset($_POST['username']) && isset($_POST['password'])        && isset($_POST['repeat_password']) && isset($_POST['email'])) {    $username = addslashes(trim(stripslashes($_POST ['username'])));    $password = addslashes(trim(stripslashes($_POST ['password'])));    $repeat_password = addslashes(trim(stripslashes($_POST ['repeat_password'])));    $email = addslashes(trim(stripslashes($_POST ['email'])));    // validate    $errors = RegisterValidator::validate($username, $password, $repeat_password, $email);    // validate    if (empty($errors)) {        // save        $dao = new UserDao();        $user = new User();        $user->setEmail($email);        $last_login_ip = Utils::getIpAddress();        $user->setLastLoginIp($last_login_ip);        $user->setUsername($username);        $salt = substr(sha1(mt_rand()), 0, 22);        $hash_password = sha1($salt . $password);        $user->setPassword($hash_password);        $user->setSalt($salt);        $user = $dao->save($user);        if ($user) {            UserLogin::setUserInfo($user);            Flash::addFlash('注册成功!');        }        else {            Flash::addFlash('对不起,由于服务器内部错误,导致注册失败。请稍后再试。');        }        Utils::redirect('welcome');    }        foreach ($errors as $e) {        $msg .= $e->getMessage()."<br>";    }

3.代码中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;    }}?>

 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
thinkphp用户名记住密码的方法
新型万能登录密码
修改ecshop让后台登陆支持使用邮箱
【Eolinker使用实例】同一个脚本如何针对多个数据集做不同响应断言?
万能密码是什么 菜鸟必读
struts2学习笔记(2)——简单的输入验证以及标签库的运用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服