Update RegisterValidator.php
This commit is contained in:
parent
30e5f89118
commit
c9ba9acc3f
@ -7,6 +7,31 @@ class RegisterValidator
|
|||||||
private $password = '';
|
private $password = '';
|
||||||
private $birthday = '';
|
private $birthday = '';
|
||||||
private $sex = 0;
|
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)
|
public function setLogin($login)
|
||||||
{
|
{
|
||||||
@ -15,8 +40,8 @@ class RegisterValidator
|
|||||||
if (
|
if (
|
||||||
$this->loginIsAllowed($login) &&
|
$this->loginIsAllowed($login) &&
|
||||||
!$this->loginIsMixed($login) &&
|
!$this->loginIsMixed($login) &&
|
||||||
mb_strlen($login < 2) &&
|
mb_strlen($login <= $this->loginLength['min']) &&
|
||||||
mb_strlen($login) > 16 &&
|
mb_strlen($login) >= $this->loginLength['max'] &&
|
||||||
!strpos("!@#$%^&*()\+|/'\"", $login)
|
!strpos("!@#$%^&*()\+|/'\"", $login)
|
||||||
) {
|
) {
|
||||||
$this->login = $login;
|
$this->login = $login;
|
||||||
@ -26,12 +51,7 @@ class RegisterValidator
|
|||||||
|
|
||||||
private function loginIsAllowed($login)
|
private function loginIsAllowed($login)
|
||||||
{
|
{
|
||||||
$disallowed = [
|
$d = implode('|', $this->disallowedLogins);
|
||||||
'Мироздатель',
|
|
||||||
'Мусорщик',
|
|
||||||
'Комментатор',
|
|
||||||
];
|
|
||||||
$d = implode('|', $disallowed);
|
|
||||||
$pattern = "/\b($d)\b/iu";
|
$pattern = "/\b($d)\b/iu";
|
||||||
return !preg_match($pattern, $login);
|
return !preg_match($pattern, $login);
|
||||||
}
|
}
|
||||||
@ -53,7 +73,7 @@ class RegisterValidator
|
|||||||
|
|
||||||
public function setPassword($password, $passwordVerify)
|
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);
|
$this->password = md5($password);
|
||||||
}
|
}
|
||||||
return $this;
|
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 заточен под <input type=date>, если надо в том формате, что сейчас, надо записывать в него:
|
||||||
|
# $birthday = "$yy-$mm-$dd";
|
||||||
|
|
||||||
|
$values = $rv
|
||||||
|
->setLogin($login)
|
||||||
|
->setPassword($pass1, $pass2)
|
||||||
|
->setEmail($email)
|
||||||
|
->setBirthday($birthday)
|
||||||
|
->setSex($sex)
|
||||||
|
->get();
|
||||||
|
Loading…
Reference in New Issue
Block a user