Update RegisterValidator.php
This commit is contained in:
parent
c9ba9acc3f
commit
af9f9a6970
@ -10,6 +10,7 @@ class RegisterValidator
|
||||
private $disallowedLogins = ['admin', 'moderator',];
|
||||
private $loginLength = ['min' => 2, 'max' => 16];
|
||||
private $passwordLength = 3;
|
||||
private $minimumAge = 16;
|
||||
|
||||
public function setDisallowedLogins(array $disallowedLogins)
|
||||
{
|
||||
@ -32,7 +33,28 @@ class RegisterValidator
|
||||
$this->loginLength = ['min' => $min, 'max' => $max];
|
||||
}
|
||||
}
|
||||
|
||||
public function setMinimumAge($years)
|
||||
{
|
||||
$years = (int)$years;
|
||||
if ($years > 0) {
|
||||
$this->minimumAge = $years;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Работа с логином.
|
||||
*
|
||||
* 1. Убираем множественные пробелы между словами
|
||||
* 2. Убираем проблемы перед и после.
|
||||
* 3. Проверяем можно ли использовать логин сравнивая со списком разрешенных.
|
||||
* 4. Проверяем нет ли в логине одинаково выглядящих букв из разных раскладок.
|
||||
* 5. Проверяем минимальный и максимальный размер.
|
||||
* 6. Проверяем запрещённые символы.
|
||||
*
|
||||
* @param $login
|
||||
* @return $this
|
||||
*/
|
||||
public function setLogin($login)
|
||||
{
|
||||
$login = preg_replace('!\s+!', ' ', $login); // remove inner spaces
|
||||
@ -63,6 +85,12 @@ class RegisterValidator
|
||||
return ($ru && $en) || (!$ru && !$en);
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяем почту встроенным валидатором. Его хватает для большинства задач.
|
||||
*
|
||||
* @param $email
|
||||
* @return $this
|
||||
*/
|
||||
public function setEmail($email)
|
||||
{
|
||||
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
||||
@ -71,6 +99,19 @@ class RegisterValidator
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяем пароли.
|
||||
*
|
||||
* 1. Два пароля должны совпадать.
|
||||
* 2. Пароль должен быть заданной длинны.
|
||||
* 3. Если с паролем всё ок, оборачиваем его в md5()
|
||||
*
|
||||
* !!! Это очень ненадёжно. Уже давно стоит перейти на password_hash() / password_verify()
|
||||
*
|
||||
* @param $password
|
||||
* @param $passwordVerify
|
||||
* @return $this
|
||||
*/
|
||||
public function setPassword($password, $passwordVerify)
|
||||
{
|
||||
if ($this->password === $passwordVerify && mb_strlen($password) >= $this->passwordLength) {
|
||||
@ -79,10 +120,21 @@ class RegisterValidator
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяем дату рождения.
|
||||
*
|
||||
* 1. Входящая строка должна быть реально существующей датой.
|
||||
* 2. Эта дата должна быть больше чем минимальный возраст игрока.
|
||||
*
|
||||
* @param $birthday
|
||||
* @return $this
|
||||
*/
|
||||
public function setBirthday($birthday)
|
||||
{
|
||||
$bdate = DateTime::createFromFormat('Y-m-d', $birthday);
|
||||
if ($bdate) {
|
||||
$today = new DateTime();
|
||||
$interval = $today->diff($bdate);
|
||||
if ($bdate && $interval->y >= $this->minimumAge) {
|
||||
$this->birthday = $bdate->format('d.m.Y');
|
||||
}
|
||||
return $this;
|
||||
@ -120,13 +172,17 @@ $rv->setDisallowedLogins([
|
||||
'Комментатор',
|
||||
]);
|
||||
|
||||
# необязательный параметр, по умолчанию 16.
|
||||
# Длинна логина. Необязательный параметр, по умолчанию 16. Можно указать второе число - минимальную длинну.
|
||||
$rv->setLoginLength(16);
|
||||
$rv->setLoginLength(16, 3);
|
||||
|
||||
# необязательный параметр, по умолчанию 3.
|
||||
# Длинна пароля. Необязательный параметр, по умолчанию 3.
|
||||
$rv->setPasswordLength(3);
|
||||
|
||||
# проверяем введённые значения и записываем результат в массив если всё ок, или пустую строку, если не ок.
|
||||
# Минимальный возраст игрока. Необязательный параметр, по умолчанию 16.
|
||||
$rv->setMinimumAge(16);
|
||||
|
||||
# Проверяем введённые значения и записываем результат в массив если всё ок, или пустую строку, если не ок.
|
||||
# [login->string, email->string, password->md5(string), birthday->dd.mm.YYYY, sex->int]
|
||||
|
||||
# birthday заточен под <input type=date>, если надо в том формате, что сейчас, надо записывать в него:
|
||||
|
Loading…
Reference in New Issue
Block a user