ホームページ  >  記事  >  バックエンド開発  >  登録時の PHP 入力情報バリデータの詳細な実装_PHP チュートリアル

登録時の PHP 入力情報バリデータの詳細な実装_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:01:30764ブラウズ

1. 入力情報を検証するためのクラス (主にユーザー名、パスワード、パスワードの繰り返し、電子メールの検証に使用され、その他の機能を追加できます)

コードをコピーします コードは次のとおりです:

/**
* 登録用のバリデータ
 */
final class RegisterValidator {
private function __construct() {

}
/**
* 指定されたユーザー名、パスワード、repeat_password、および電子メールを検証します。
* @param $username、$password、$repeat_password、$email を検証します
* {@link Error} の @return 配列配列
    */
public static function validate($username, $password . new Error('username', 'ユーザー名は空にすることはできません。');
');
} elseif (strlen($username) (!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', 'Username 文字、数字、アンダースコアの組み合わせのみ使用できます (_ );
elseif (strlen($password)<6) {
$errors[] = new Error('password', 'パスワードの長さは次のとおりです6文字未満。 ');
} elseif (strlen($password) /^[A-Za-z0-9!@#\$%\^&\*_]+$ /', $password)) {
$errors[] = new Error('password', 'パスワードは、数字、文字、または !@#$%^&*_ のような文字の組み合わせのみです。 ');
} elseif(!utils :: isvalidemail($ email)){
$ errors [] = new error( 'email'、 '電子メール形式は間違っています。 ( 'username'、 'ユーザー名は既に使用されています。);
2、在注册页面进行用
复制码代码如下:
$username = null;
$password = null;
$repeat_password = null;
$email = null;
$メッセージ= "";
if (isset($_POST['username']) && isset($_POST['password'])
&& isset($_POST['repeat_password']) && isset($_POST['email'] )) {
$username = addlashes(trim(stripslashes($_POST ['username'])));
$password = addlashes(trim(stripslashes($_POST ['password'])));
$repeat_password = addlashes (trim(stripslashes($_POST ['repeat_password'])));
$email = addedlashes(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);
$s代替 = 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.代码中エラー类记录验证時の错误信息
复制帽代码如下:
/* *
* 検証エラーです。
 */
final class Error {
private $source;
private $message;
/**
* 新しいエラーを作成します。
* @param エラーの $source ソースを混合しました
* @param string $message エラーメッセージ
    */
function __construct($source, $message) {
$this->source = $source;
$this- >message = $message;
}
/**
* エラーのソースを取得します。
* @return エラーの混合ソースを返します
    */
public function getSource() {
return $this->source;
}
/**
* エラーメッセージを取得します。
* @return string エラーメッセージ
    */
public function getMessage( ) {
$this->message;
}
}
?>

www.bkjia.com本当http://www.bkjia.com/PHPjc/327996.html技術記事 1. 入力情報を検証するためのクラス (主にユーザー名、パスワード、パスワードの繰り返し、電子メールの検証に使用されます。その他の機能を追加することもできます) 次のようにコードをコピーします: ?php /** * Validator for...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。