Exemplo n.º 1
0
<?php

$action = trim($_POST['action']);
$email = trim($_POST['email']);
if ($action == "send") {
    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/smail.php";
    if (preg_match("/^[-^!#\$%&'*+\\/=?`{|}~.\\w]+@[-a-zA-Z0-9]+(\\.[-a-zA-Z0-9]+)+\$/", $email)) {
        $sm = new smail();
        $error = $sm->remind($email);
    } else {
        $error = "Поле заполнено некорректно";
    }
}
$no_banner = 1;
$header = "header.php";
$footer = "footer.html";
$content = "wrongpass_inner.php";
include "template.php";
Exemplo n.º 2
0
function RemindByEmail($email, $rnd, $captchanum, $role)
{
    global $DB;
    session_start();
    $objResponse = new xajaxResponse();
    $captcha = new captcha($captchanum);
    $error_type = '';
    $show_role = false;
    if (!$captcha->checkNumber(trim($rnd))) {
        $error = 'Вы ввели неверную комбинацию символов. Попробуйте еще раз';
        $error_type = 'captcha';
    } else {
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sbr_meta.php';
        require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sms_gate_a1.php';
        $email = trim(stripslashes($email));
        if (preg_match("/^[-^!#\$%&'*+\\/=?`{|}~.\\w]+@[-a-zA-Z0-9]+(\\.[-a-zA-Z0-9]+)+\$/", $email)) {
            $error_type = 'email';
            $ok_type = 'email';
            // email
            require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
            $u = new users();
            $u->GetUser($email, true, $email);
            if (!$u->uid) {
                $error = 'E-mail не зарегистрирован. Укажите корректный логин/телефон/e-mail.';
            } else {
                if ($u->is_banned) {
                    $error = 'Аккаунт с этим адресом заблокирован. К сожалению, вы не можете восстановить к нему доступ.';
                } else {
                    if ($u->isRemindByPhoneOnly($u->login)) {
                        $ok_type = 'phone';
                        $reqv = sbr_meta::getUserReqvs($u->uid);
                        $ureqv = $reqv[$reqv['form_type']];
                        $phone = $ureqv['mob_phone'];
                        $passwd = users::ResetPasswordSMS($u->uid, $phone);
                        $sms_gate = new sms_gate_a1($phone);
                        $sms_gate->sendSMS(preg_replace('/-LOGIN-/', $u->login, $sms_gate->getTextMessage(sms_gate::TYPE_PASS, $passwd)));
                        if ($sms_gate->getHTTPCode() == 200) {
                            // OK ТЕЛЕФОН
                        } else {
                            $error = 'Ошибка отправки СМС на указанный номер';
                        }
                    } else {
                        $sm = new smail();
                        $sm->remind($u->email);
                    }
                }
            }
        } elseif (preg_match("/^\\+\\d{1,}\$/", $email) || preg_match("/^\\d{1,}\$/", $email)) {
            $error_type = 'email';
            $ok_type = 'phone';
            // телефон
            if (!preg_match("/^\\+\\d{1,}\$/", $email)) {
                $email = '+' . $email;
            }
            $phone = $email;
            $safety_frl = (int) $role !== 2 ? sbr_meta::findSafetyPhone($phone, 'frl') : array();
            $safety_emp = (int) $role !== 1 ? sbr_meta::findSafetyPhone($phone, 'emp') : array();
            $safety = null;
            if (!empty($safety_emp) && !empty($safety_frl)) {
                $error = 'Номер телефона привязан к двум аккаунтам. Пожалуйста, укажите, к какому аккаунту вы хотите восстановить доступ.';
                $show_role = true;
            } elseif (empty($safety_emp) && empty($safety_frl)) {
                $error = 'Номер не связан ни с одним аккаунтом. Укажите корректный логин/телефон/e-mail.';
            } else {
                $safety = !empty($safety_frl) ? $safety_frl : $safety_emp;
                $u = new users();
                $u->GetUserByUID($safety['uid']);
                if ($u->is_banned) {
                    $error = 'Аккаунт с этим номером заблокирован. К сожалению, вы не можете восстановить к нему доступ.';
                } else {
                    $passwd = users::ResetPasswordSMS($safety['uid'], $phone);
                    $sms_gate = new sms_gate_a1($phone);
                    $sms_gate->sendSMS(preg_replace('/-LOGIN-/', $u->login, $sms_gate->getTextMessage(sms_gate::TYPE_PASS, $passwd)));
                    if ($sms_gate->getHTTPCode() == 200) {
                        // OK ТЕЛЕФОН
                    } else {
                        $error = 'Ошибка отправки СМС на указанный номер';
                    }
                }
            }
        } else {
            $error_type = 'email';
            $ok_type = 'email';
            // логин
            require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
            $login = $email;
            $u = new users();
            $u->GetUser($login);
            if (!$u->uid) {
                $error = 'Логин не зарегистрирован. Укажите корректный логин/телефон/e-mail.';
            } else {
                if ($u->is_banned) {
                    $error = 'Аккаунт с этим логином заблокирован. К сожалению, вы не можете восстановить к нему доступ.';
                } else {
                    if ($u->isRemindByPhoneOnly($u->login)) {
                        $ok_type = 'phone';
                        $error_type = 'email';
                        $reqv = sbr_meta::getUserReqvs($u->uid);
                        $ureqv = $reqv[$reqv['form_type']];
                        $phone = $ureqv['mob_phone'];
                        $passwd = users::ResetPasswordSMS($u->uid, $phone);
                        $sms_gate = new sms_gate_a1($phone);
                        $sms_gate->sendSMS(preg_replace('/-LOGIN-/', $u->login, $sms_gate->getTextMessage(sms_gate::TYPE_PASS, $passwd)));
                        if ($sms_gate->getHTTPCode() == 200) {
                            // OK ТЕЛЕФОН
                        } else {
                            $error = 'Ошибка отправки СМС на указанный номер';
                        }
                    } else {
                        $sm = new smail();
                        $sm->remind($u->email);
                    }
                }
            }
        }
    }
    if ($error) {
        if (!$show_role) {
            $captcha->setNumber();
            $objResponse->assign('image_rnd', 'src', '/image.php?num=' . $captchanum . '&t=' . time());
            $objResponse->assign('remind_captcha', 'value', '');
        }
        $objResponse->assign('remind_' . $error_type . '_error_txt', 'innerHTML', $error);
        $objResponse->script('$("remind_' . $error_type . '_error").removeClass("b-shadow_hide");');
        $objResponse->assign('remind_email', 'value', $email);
        $objResponse->script("\$('remind_button_email').addClass('b-button_disabled')");
        $objResponse->script('$("block_role").' . ($show_role ? 'remove' : 'add') . 'Class("b-layout_hide");');
    } else {
        switch ($ok_type) {
            case 'phone':
                $objResponse->script("\$('email_remind').hide();");
                $objResponse->script("\$('remind_ok_phone').show();");
                $objResponse->script("\$('remind_ok_phone_txt').set('html', '" . preg_replace("/^(\\+\\d{1,})\\d{4}(\\d{2})\$/", '$1****$2', $phone) . "');");
                break;
            case 'email':
                $objResponse->script("\$('email_remind').hide();");
                $objResponse->script("\$('remind_ok_email').show();");
                $a = explode('@', $u->email);
                $b = explode('.', $a[1]);
                $c = substr($b[0], 0, 1) . '****' . substr($b[0], strlen($b[0]) - 1, 1);
                if ($b[1]) {
                    foreach ($b as $k => $v) {
                        if ($k != 0) {
                            $c .= '.' . $b[$k];
                        }
                    }
                }
                $email = substr($a[0], 0, 2) . '****' . substr($a[0], strlen($a[0]) - 2, 2) . '@' . $c;
                $objResponse->script("\$('remind_ok_email_txt').set('html', '" . $email . "');");
                break;
        }
    }
    return $objResponse;
}
Exemplo n.º 3
0
 /**
  * Забыли пароль. Телефон.
  * 
  * @param  array $aParams массив входящих данных
  * @return array $aResult ответ
  */
 protected function x____users_forgot_email($aParams = array())
 {
     $this->_validDevice($aParams);
     $sLogin = __paramValue('string', $aParams['username'], null, true);
     if (!empty($sLogin)) {
         require_once ABS_PATH . '/classes/users.php';
         $oUser = new users();
         if (preg_match("/^[-^!#\$%&'*+\\/=?`{|}~.\\w]+@[-a-zA-Z0-9]+(\\.[-a-zA-Z0-9]+)+\$/", $sLogin)) {
             $err = $oUser->GetUser($sLogin, true, $sLogin);
         } else {
             $err = $oUser->GetUser($sLogin);
         }
         if ($oUser->uid) {
             if (!users::isRemindByPhoneOnly($sLogin)) {
                 require_once ABS_PATH . '/classes/smail.php';
                 $sm = new smail();
                 $error = $sm->remind($oUser->email);
                 if ($error) {
                     $this->error(EXTERNAL_ERR_SERVER_ERROR);
                 }
             } else {
                 $this->error(EXTERNAL_ERR_REMIND_PHONE_ONLY);
             }
         } else {
             $this->error(EXTERNAL_ERR_USER_NOTFOUND);
         }
     } else {
         $this->error(EXTERNAL_ERR_EMPTY_USERNAME);
     }
     return array();
 }