示例#1
0
session_start();
$uid = get_uid();
if (!hasPermissions('grayip')) {
    header_location_exit('/404.php');
}
$menu_item = 5;
$rpath = '../../';
$css_file = array('moderation.css', 'new-admin.css', 'nav.css');
$js_file = array('gray_ip.js', 'admin_log.js', 'banned.js');
$header = $rpath . 'header.php';
$inner_page = 'index_inner.php';
$content = '../content22.php';
$footer = $rpath . 'footer.html';
$template = 'template2.php';
$log_pp = __paramInit('int', 'log_pp', 'log_pp', 20);
$gray_ip = new gray_ip($log_pp);
$task = __paramInit('string', 'task', 'task');
$page = __paramInit('int', 'page', 'page', 1);
$filter = array();
$cmd = __paramInit('string', 'cmd', null, '');
$search_name = __paramInit('string', 'search_name', null, '');
$adm = __paramInit('string', 'adm', null, 0);
$primary_id = __paramInit('string', 'primary_id', null, 0);
$f_ip = __paramInit('string', 'f_ip', null, '');
$t_ip = __paramInit('string', 't_ip', null, '');
$admins = $gray_ip->getAdmins();
$search_name = clearInputText($search_name);
if (!$page) {
    $page = 1;
} elseif ($page < 0) {
    header_location_exit('/404.php');
示例#2
0
 /**
  * Серый список IP
  * 
  * @param users $user
  */
 function checkGrayIp($user)
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/gray_ip.php';
     $aGrayList = gray_ip::getGrayListByRegIp(getRemoteIP());
     if ($aGrayList) {
         // есть записи в списке первичных IP
         gray_ip::addSecondaryIp($user->uid, $user->login, $user->role, $aGrayList);
     }
 }
 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";
 }
示例#4
0
/**
 * Обновляет адреса пользователя в сером списке IP
 * 
 * @param  int $nUserId UID пользователя
 * @param  string $sUserLogin Логин пользователя
 * @param  int $nAdminId UID админа
 * @param  string $sIp список IP адресов
 * @return object xajaxResponse
 */
function setPrimaryIp($nUserId = 0, $sUserLogin = '', $nAdminId = 0, $sIp = '')
{
    session_start();
    $objResponse = new xajaxResponse();
    $objResponse->script('gray_ip.clearEditAll();');
    $sIp = change_q(trim(stripslashes($sIp)), true);
    $aIp = users::CheckSafetyIP($sIp);
    if (!$aIp['error_flag']) {
        $bRes = gray_ip::updatePrimaryIp($nUserId, $sUserLogin, $nAdminId, $aIp['ip_addresses'], $bDel);
        if ($bRes) {
            $objResponse->alert('IP адреса успешно сохранены' . ($bDel ? "\nСтраница будет перезагружена" : ''));
            if ($bDel) {
                $objResponse->script('window.location.reload(true)');
            }
        } else {
            $objResponse->alert('Ошибка сохранения IP адресов');
        }
    } else {
        $objResponse->alert($aIp['alert'][1]);
    }
    return $objResponse;
}