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; } }