Exemplo n.º 1
0
 public function validate($name, $value, $phone_is_set = false)
 {
     global $DB;
     switch ($name) {
         case 'agree':
             if ($value != 1) {
                 $this->error[$name] = 'Прочтите и согласитесь с правилами';
             }
             break;
         case 'country':
             if ($value <= 0) {
                 $this->error[$name] = 'Выберите страну';
             }
             break;
         case 'city':
             if ($value <= 0) {
                 $this->error[$name] = 'Выберите город';
             }
             break;
         case 'birthday':
             if (!$value) {
                 $this->error[$name] = "Заполните дату дня рождения";
                 $this->errno[$name] = 1;
             }
             break;
         case 'sex':
             if ($value === null) {
                 // $this->error[$name] = 'Выберите пол';
             }
             break;
         case 'uname':
         case 'usurname':
             if (!$value) {
                 $this->error[$name] = "Поле заполнено некорректно";
                 $this->errno[$name] = 1;
             }
             if (!preg_match("/^[-a-zA-Zа-яёА-ЯЁ]+\$/i", $value)) {
                 $this->error[$name] = "Поле заполнено некорректно";
                 $this->errno[$name] = 2;
             }
             break;
         case 'password':
             if ($value == '') {
                 $this->error[$name] = 'Введите пароль';
                 $this->errno[$name] = 1;
             } else {
                 if (strlen($value) > 24) {
                     $this->error[$name] = 'Максимальная длина пароля 24 символа';
                     $this->errno[$name] = 2;
                 } else {
                     if (strlen($value) < 6) {
                         $this->error[$name] = 'Минимальная длина пароля 6 символов';
                         $this->errno[$name] = 3;
                     } else {
                         if (strlen(preg_replace("#[a-zA-Z\\d\\!\\@\\#\$\\%\\^\\&\\*\\(\\)\\_\\+\\-\\=\\;\\,\\.\\/\\?\\[\\]\\{\\}]#", "", $value)) != 0) {
                             $this->error[$name] = 'Поле заполнено некорректно';
                             $this->errno[$name] = 4;
                         }
                     }
                 }
             }
             break;
         case 'login':
             if (!preg_match("/^[a-zA-Z0-9]+[-a-zA-Z0-9_]{2,}\$/", $value)) {
                 $this->error[$name] = 'От 3 до 15 символов. Может содержать латинские буквы, цифры, подчёркивание (_) и дефис (-)';
                 $this->errno[$name] = 1;
             }
             if (in_array(strtolower($value), $GLOBALS['disallowUserLogins'])) {
                 $this->error[$name] = 'Извините, такой логин использовать нельзя';
                 $this->errno[$name] = 2;
             }
             if (empty($this->error[$name])) {
                 $sql = "SELECT uid FROM users WHERE lower(login) = ?";
                 if ($DB->val($sql, strtolower($value))) {
                     $this->error[$name] = 'Извините, этот логин занят. Придумайте другой.';
                     $this->errno[$name] = 3;
                 }
             }
             break;
         case 'email':
             if (!is_email($value)) {
                 $this->error[$name] = 'Поле заполнено некорректно';
                 $this->errno[$name] = 1;
             }
             if (empty($this->error[$name])) {
                 require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/temp_email.php";
                 if (temp_email::isTempEmail($value)) {
                     $this->error[$name] = 'К сожалению, регистрация аккаунта на указанный адрес электронной почты невозможна. Пожалуйста, для регистрации воспользуйтесь почтовым адресом другого домена';
                     $this->errno[$name] = 2;
                 } else {
                     if ($DB->val("SELECT uid FROM users WHERE lower(email) = ?", strtolower($value))) {
                         if ($this->_disable_email_redirect) {
                             $this->error[$name] = 'Email занят';
                             $this->errno[$name] = 3;
                         } else {
                             require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/smail.php";
                             $smail = new smail();
                             $smail->reRegisterToYourMail(strtolower($value));
                             unset($_SESSION["regform_captcha_entered"]);
                             unset($_SESSION["reg_phone"]);
                             unset($_SESSION['send_sms_time']);
                             header_location_exit("/reg_complete.php");
                         }
                     }
                 }
             }
             break;
         case 'smscode':
             if ($_SESSION['smsCode'] != $value && !($value == 7777 && $_SESSION["reg_phone"] == 71111112222 && !is_release())) {
                 $this->error[$name] = 'Неверный код';
             }
             break;
         case 'phone':
             if (!$phone_is_set && $_SESSION["reg_phone"] != $value) {
                 $this->error[$name] = 'Вы подтвердили не этот номер';
                 $this->errno[$name] = 1;
             }
             $sPhone = $phone_is_set ? $value : $_SESSION['reg_phone'];
             if (trim(preg_replace("#[\\D]#", "", $sPhone)) == '') {
                 $this->error[$name] = 'Необходимо ввести номер';
                 $this->errno[$name] = 2;
             }
             break;
     }
 }