commit 48f6cbeef06b8306eacfd50115a016625d482d2e Author: Ivor Barhansky Date: Wed Apr 24 12:32:43 2024 +0000 Add RegisterValidator.php diff --git a/RegisterValidator.php b/RegisterValidator.php new file mode 100644 index 0000000..4167d76 --- /dev/null +++ b/RegisterValidator.php @@ -0,0 +1,95 @@ +loginIsAllowed($login) && !$this->loginIsMixed($login)) { + $this->login = $login; + } + return $this; + } + + private function loginIsAllowed($login) + { + $disallowed = [ + 'Мироздатель', + 'Мусорщик', + 'Комментатор', + ]; + $d = implode('|', $disallowed); + $pattern = "/\b($d)\b/iu"; + return !preg_match($pattern, $login); + } + + private function loginIsMixed($login) + { + $en = preg_match("/^(([0-9A-z -])+)$/iu", $login); + $ru = preg_match("/^([а-яёіїє\s\d]*)$/iu", $login); + return ($ru && $en) || (!$ru && !$en); + } + + public function setEmail($email) + { + if (filter_var($email, FILTER_VALIDATE_EMAIL)) { + $this->email = $email; + } + return $this; + } + + public function setPassword($password, $passwordVerify) + { + if ($this->password === $passwordVerify) { + $this->password = md5($password); + } + return $this; + } + + public function setBirthday($birthday) + { + $bdate = DateTime::createFromFormat('Y-m-d', $birthday); + if ($bdate) { + $this->birthday = $bdate->format('d.m.Y'); + } + return $this; + } + + public function setSex($sex) + { + if ((int)$sex > 0) { + $this->sex = $sex; + } + return $this; + } + + public function verify() + { + if (!empty($this->login) && !empty($this->email) && !empty($this->password) && !empty($this->birthday)) { + return [ + 'login' => $this->login, + 'email' => $this->email, + 'password' => $this->password, + 'birthday' => $this->birthday, + 'sex' => $this->sex, + ]; + } + return []; + } +} + +$rv = new RegisterValidator(); +$values = $rv + ->setLogin($login) + ->setPassword($pass1, $pass2) + ->setEmail($email) + ->setBirthday($birthday) + ->setSex($sex) + ->verify();