public function registration($type_wizard = step_wizard_registration::TYPE_WIZARD_EMP) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/captcha.php"; $action = __paramInit('string', null, 'action'); if ($this->status == step_wizard::STATUS_CONFIRM) { if ($_SESSION['email'] == 0) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; $user = new users(); $email = $user->GetField(wizard::getUserIDReg(), $error, "email"); $_SESSION['email'] = $email; } if ($action == registration::ACTION_SEND_MAIL) { $send = registration::actionSendMail(false); if ($send) { header("Location: /wizard/registration/"); exit; } } } $type_user = $type_wizard; if ($action == 'registration' && $this->status == 0) { $error = array(); if (!$_SESSION["regform_captcha_entered"]) { session_start(); $captchanum = __paramInit('string', null, 'captchanum'); $num = __paramInit('string', null, 'rndnum'); $_SESSION['w_reg_captcha_num'] = $captchanum; $captcha = new captcha($captchanum); if (!$captcha->checkNumber($num)) { $error['captcha'] = 'Неверный код. Попробуйте еще раз'; unset($_SESSION['w_reg_captcha_num']); } } if ($type_wizard == step_wizard_registration::TYPE_WIZARD_EMP) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/employer.php"; } else { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/freelancer.php"; } $login = trim(__paramInit('string', null, 'login')); $email = trim(__paramInit('string', null, 'email')); $agree = trim(__paramInit('string', null, 'agree')); $phone = trim(__paramInit('string', null, 'phone')); $smscode = trim(__paramInit('string', null, 'smscode')); // пароль берем напрямую из $_POST, а то __paramInit режет спецсимволы (пароль хешируется - SQL инъекция невозможна) $passwd = $_POST['password']; if (!$agree) { $error['agree'] = 'Прочтите и согласитесь с правилами'; } if ($passwd == '') { $error['pwd'] = 'Введите пароль'; } if (!preg_match("/^[a-zA-Z0-9]+[-a-zA-Z0-9_]{2,}\$/", $login)) { $error['login'] = '******'; } if (in_array(strtolower($login), $GLOBALS['disallowUserLogins'])) { $error['login'] = '******'; } if (!is_email($email)) { $error['email'] = 'Поле заполнено некорректно'; } if ($smscode != $_SESSION["smsCode"]) { $error['smscode'] = 'Код не совпал'; } if ($phone != $_SESSION["reg_phone"]) { $error['phone'] = 'Вы вводили другой номер при запросе кода'; } $phone = preg_replace("#^\\+#", "", $_SESSION["reg_phone"]); if (empty($error['login'])) { $sql = "SELECT uid FROM users WHERE lower(login) = ?"; if ($this->_db->val($sql, strtolower($login))) { $error['login'] = '******'; } } if (empty($error['email']) && empty($error['captcha'])) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/temp_email.php"; if (temp_email::isTempEmail($email)) { $error['email'] = 'К сожалению, регистрация аккаунта на указанный адрес электронной почты невозможна. Пожалуйста, для регистрации воспользуйтесь почтовым адресом другого домена'; } else { $sql = "SELECT uid FROM users WHERE lower(email) = ?"; if ($this->_db->val($sql, strtolower($email))) { $error['email'] = 'Указанная вами электронная почта уже зарегистрирована. Авторизуйтесь на сайте или укажите другую электронную почту.'; } } } if (count($error) == 0) { if ($type_wizard == step_wizard_registration::TYPE_WIZARD_EMP) { $newuser = new employer(); } else { $newuser = new freelancer(); } $newuser->checked_name = false; if ($type_wizard == step_wizard_registration::TYPE_WIZARD_EMP) { $newuser->role = 1; } else { $newuser->role = 0; } $newuser->login = substr($login, 0, 15); $newuser->email = substr($email, 0, 64); $newuser->passwd = substr($passwd, 0, 24); $id = $newuser->Create($rerror, $error); if ($id && !$error) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/activate_code.php"; $this->parent->saveActionWizard($this, step_wizard::STATUS_CONFIRM); $this->parent->bindUserIDReg($id); unset($_SESSION['ref_uri']); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; $smail = new smail(); $bSuspect = users::isSuspiciousUser($id, $newuser->login, '', $newuser->uname, '', $newuser->usurname, ''); $sPasswd = $bSuspect ? $newuser->passwd : ''; // чтобы из админки можно было выслать $smail->NewUser $code = activate_code::Create($id, $newuser->login, $sPasswd, $error); if (!$bSuspect) { $_SESSION['suspect'] = false; // юзер не подозрительный - сразу отпавляем юзеру письмо с кодом активации $smail->NewUser($newuser->login, false, $code, $this->getWizardUserID(), $newuser->role ? 'emp' : 'frl'); } else { $_SESSION['suspect'] = true; // отправляем уведомление админу о том, что зарегистрировался подозрительный юзер // если админ его одобрит - то письмо с кодом активации уйдет из админки $smail->adminNewSuspectUser($newuser->login, $newuser->uname, $newuser->usurname); } //Записываем подтвержденный номер телефона в финансы require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/sms_gate.php"; $phone = '+' . preg_replace("#^\\+#", "", $_SESSION["reg_phone"]); unset($_SESSION["regform_captcha_entered"]); sms_gate::saveSmsInfo($phone, $_SESSION["reg_sms_isnn"], $_SESSION["smsCode"], $_SESION["reg_sms_date_send"], $id); // стираем куку, чтобы показался блок "Вы успешно зарегистрировались" setcookie('master_auth', "", time() - 3600, '/'); // Серый список IP ---------------------- require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/gray_ip.php'; $aGrayList = gray_ip::getGrayListByRegIp(getRemoteIP()); if ($aGrayList) { // есть записи в списке первичных IP gray_ip::addSecondaryIp($id, $newuser->login, $newuser->role, $aGrayList); } //--------------------------------------- $_SESSION['email'] = $newuser->email; header("Location: /wizard/registration/"); exit; } } } elseif ($action == 'authorization') { $auth_error = $this->authorization($auth_login); } include $_SERVER['DOCUMENT_ROOT'] . "/wizard/registration/steps/tpl.step.reg.php"; }
if ($email != $user->email) { $ch_mail = 1; } if ($user->CheckEmail($email)) { $error_flag = 1; $alert[3] = "Извините, такой электронный ящик уже существует"; } if (temp_email::isTempEmail($email)) { $error_flag = 1; $alert[3] = "Извините, но почтовые адреса с этого домена запрещены к регистрации"; } $frl = new freelancer(); $err = $frl->UpdateMain($uid, $name, $surname, $user->email, $oldpwd, $pname, $error_flag); if (!$err && !$error_flag) { // все что нужно после успешного обновления: if (users::isSuspiciousUser($uid, $login, $login, $name, $sOldName, $surname, $sOldSurname)) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; $smail = new smail(); $smail->adminNewSuspectUser($_SESSION['login'], $name, $surname); } // галки поля settings $frl->updateMainSettings($uid, $question_button_hide, $promo_block_hide, $direct_links); $frl->setPromoBlockShowCookie($uid, $promo_block_hide); } if ($err == 1) { $alert[4] = "Поле заполнено некорректно"; } if (!$err && !$error_flag) { $info = "Изменения внесены"; } setlocale(LC_ALL, 'en_US.UTF-8');
public function completedRegistration($user) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/activate_code.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/smail.php"; $smail = new smail(); $bSuspect = users::isSuspiciousUser($user->uid, $user->login, '', $user->uname, '', $user->usurname, ''); $sPasswd = $bSuspect ? $user->passwd : ''; // чтобы из админки можно было выслать $smail->NewUser $code = activate_code::Create($user->uid, $user->login, $sPasswd, $error); if (!$bSuspect) { // юзер не подозрительный - сразу отпавляем юзеру письмо с кодом активации $_SESSION['suspect'] = false; $smail->NewUser($user->login, $this->_fields['password'], $code); } else { // отправляем уведомление админу о том, что зарегистрировался подозрительный юзер // если админ его одобрит - то письмо с кодом активации уйдет из админки $_SESSION['suspect'] = true; $smail->adminNewSuspectUser($user->login, $user->uname, $user->usurname); } // Серый список IP $this->checkGrayIp($user); // Фиксация трафика, учет статистики $GLOBALS['traffic_stat']->checkRegistration($user->uid, $user->role); return true; }
if ($email != $user->email) { $ch_mail = 1; } if ($user->CheckEmail($email)) { $error_flag = 1; $alert[3] = "Извините, такой электронный ящик уже существует"; } if (temp_email::isTempEmail($email)) { $error_flag = 1; $alert[3] = "Извините, но почтовые адреса с этого домена запрещены к регистрации"; } $frl = new employer(); $err = $frl->UpdateMain(get_uid(), $name, $surname, $user->email, $oldpwd, $pname, $error_flag); if (!$err && !$error_flag) { // все что нужно после успешного обновления: if (users::isSuspiciousUser(get_uid(), $_SESSION['login'], $_SESSION['login'], $name, $sOldName, $surname, $sOldSurname)) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; $smail = new smail(); $smail->adminNewSuspectUser($_SESSION['login'], $name, $surname); } // галки поля settings $frl->updateMainSettings($uid, $question_button_hide, $promo_block_hide, $direct_links); $frl->setPromoBlockShowCookie($uid, $promo_block_hide); } if ($err == 1) { $alert[4] = "Поле заполнено некорректно"; } if (!$err && !$error_flag) { $info = "Изменения внесены"; } setlocale(LC_ALL, 'en_US.UTF-8');