From c9ba9acc3f8b57c6b68a17b7994b276d9ca37a63 Mon Sep 17 00:00:00 2001 From: Ivor Barhansky Date: Wed, 24 Apr 2024 15:37:37 +0000 Subject: [PATCH] Update RegisterValidator.php --- RegisterValidator.php | 70 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 61 insertions(+), 9 deletions(-) diff --git a/RegisterValidator.php b/RegisterValidator.php index 7e41378..2c8a6fd 100644 --- a/RegisterValidator.php +++ b/RegisterValidator.php @@ -7,6 +7,31 @@ class RegisterValidator private $password = ''; private $birthday = ''; private $sex = 0; + private $disallowedLogins = ['admin', 'moderator',]; + private $loginLength = ['min' => 2, 'max' => 16]; + private $passwordLength = 3; + + public function setDisallowedLogins(array $disallowedLogins) + { + $this->disallowedLogins = $disallowedLogins; + } + + public function setPasswordLength($max) + { + $max = (int)$max; + if ($max > 0) { + $this->passwordLength = $max; + } + } + + public function setLoginLength($max, $min = 2) + { + $max = (int)$max; + $min = (int)$min; + if ($max > 0 && $min > 0 && $max > $min) { + $this->loginLength = ['min' => $min, 'max' => $max]; + } + } public function setLogin($login) { @@ -15,8 +40,8 @@ class RegisterValidator if ( $this->loginIsAllowed($login) && !$this->loginIsMixed($login) && - mb_strlen($login < 2) && - mb_strlen($login) > 16 && + mb_strlen($login <= $this->loginLength['min']) && + mb_strlen($login) >= $this->loginLength['max'] && !strpos("!@#$%^&*()\+|/'\"", $login) ) { $this->login = $login; @@ -26,12 +51,7 @@ class RegisterValidator private function loginIsAllowed($login) { - $disallowed = [ - 'Мироздатель', - 'Мусорщик', - 'Комментатор', - ]; - $d = implode('|', $disallowed); + $d = implode('|', $this->disallowedLogins); $pattern = "/\b($d)\b/iu"; return !preg_match($pattern, $login); } @@ -53,7 +73,7 @@ class RegisterValidator public function setPassword($password, $passwordVerify) { - if ($this->password === $passwordVerify && mb_strlen($password) > 3) { + if ($this->password === $passwordVerify && mb_strlen($password) >= $this->passwordLength) { $this->password = md5($password); } return $this; @@ -87,3 +107,35 @@ class RegisterValidator ]; } } + +## написано под PHP 5.6 +## использование: +require_once 'path/to/RegisterValidator.php'; +$rv = new RegisterValidator(); + +# обязательно +$rv->setDisallowedLogins([ + 'Мироздатель', + 'Мусорщик', + 'Комментатор', +]); + +# необязательный параметр, по умолчанию 16. +$rv->setLoginLength(16); + +# необязательный параметр, по умолчанию 3. +$rv->setPasswordLength(3); + +# проверяем введённые значения и записываем результат в массив если всё ок, или пустую строку, если не ок. +# [login->string, email->string, password->md5(string), birthday->dd.mm.YYYY, sex->int] + +# birthday заточен под , если надо в том формате, что сейчас, надо записывать в него: +# $birthday = "$yy-$mm-$dd"; + +$values = $rv + ->setLogin($login) + ->setPassword($pass1, $pass2) + ->setEmail($email) + ->setBirthday($birthday) + ->setSex($sex) + ->get();