Home  >  Article  >  Backend Development  >  Detailed implementation of PHP input information validator during registration_PHP tutorial

Detailed implementation of PHP input information validator during registration_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:01:30763browse

1. Class for verifying input information (mainly used to verify username, password, repeated password, email, other functions can be added)

Copy code The code is as follows:

/**
 * 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);
                                                                                                                                                    (strlen($username)<3) {
                                                                                                                                                                               >30) {
                                                                                                                                                                                                                                                    z]+$/',substr($username, 0, 1))) {
                 $errors[] = new Error('username', 'Username must start with a letter.');
                                                                                                             (!preg_match('/^[A-Za-z0-9_]+$/', $username)) {
        $errors[] = new Error('username', 'Username can only be letters and numbers and a combination of underscores ( _ ). ');
        } elseif (!$password) {
                 $errors[] = new Error('password', 'Password cannot be empty. ');
          } elseif (strlen($password)                   6) { elseif (strlen($password)>30) {
                     $errors[] = new Error('password', 'The password cannot exceed 30 characters.');
                                         ^[A-Za-z0-9!@#\$%\^&\*_]+$/', $password)) {
                     $errors[] = new Error('password', 'Password only It can be a combination of numbers, letters, or characters such as !@#$%^&*_ '); ('password', 'The password entered twice is inconsistent.');
           } elseif (!Utils::isValidEmail($email)) {
                      $errors[] = new Error('email', 'Email format Wrong. ');
} else {
username));
if ($user) {
$errors[] = new Error('username', 'The username has already been used.');
}

$ user = null;
// check whether email being used or not
$user = $dao->findByEmail(trim($email));
if ($user) {
$errors [] = new Error('email', 'This email address has been registered. ');
}
}
} 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()."
";
    }

3.代码中Error类用于记录验证时的错误信息
复制代码 代码如下:

/**
 * 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;
    }
}
?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/327996.htmlTechArticle1. Class to verify input information (mainly used to verify username, password, repeated password, email, Other functions can be added) Copy the code as follows: ?php /** * Validator for...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn