예제 #1
0
파일: enter.php 프로젝트: WinGood/24karcher
 function __construct()
 {
     $this->fPass = new Models_Forgotpass();
     if (URL::getQueryParametr('logout')) {
         User::logout();
     }
     if (User::isAuth()) {
         MG::redirect('/personal');
     }
     if (isset($_POST['registration'])) {
         // Если данные введены верно.
         if (!$this->unValidForm()) {
             USER::add($this->userData);
             $message = '<span class="succes-reg">Вы успешно зарегистрировались! Для активации пользователя Вам необходимо перейти по ссылке высланной на Ваш электронный адрес <strong>' . $this->userData['email'] . '</strong></span>';
             $form = false;
             // Рассылаем письма со ссылкой для подтверждения регистрации.
             $this->_sendActivationMail($this->userData['email']);
             unset($_POST);
         } else {
             $error = $this->error;
             $form = true;
         }
     } else {
         // Если пользователь не авторизован.
         if (!User::isAuth() && (isset($_POST['email']) || isset($_POST['pass']))) {
             if (!User::auth(URL::get('email'), URL::get('pass'))) {
                 $error = '<span class="msgError">' . 'Неправильная пара email-пароль! Авторизоваться не удалось.' . '</span>';
             } else {
                 $this->successfulLogon();
             }
         }
     }
     $data = array('meta_title' => 'Авторизация', 'msgError' => $error, 'message' => $message, 'meta_keywords' => !empty($model->currentCategory['meta_keywords']) ? $model->currentCategory['meta_keywords'] : "Авторизация,вход, войти в личный кабинет", 'meta_desc' => !empty($model->currentCategory['meta_desc']) ? $model->currentCategory['meta_desc'] : "Авторизуйтесь на сайте и вы получите дополнительные возможности, недоступные для обычных пользователей.");
     $this->data = $data;
 }
예제 #2
0
 public function testAddUser()
 {
     $u = new USER();
     $details = array("firstname" => 'Test', "lastname" => 'User', "email" => '*****@*****.**', "emailpublic" => '0', "postcode" => 'EH1 99SP', "mp_alert" => false, "url" => '', "password" => '', "optin" => '0', "status" => 'User');
     $u->add($details, false);
     $id = $u->user_id();
     $u->init($id);
     $this->assertEquals('Test', $u->firstname());
     $this->assertEquals('EH1 99SP', $u->postcode());
 }
예제 #3
0
 function __construct()
 {
     $this->fPass = new Models_Forgotpass();
     $form = true;
     // Отображение формы.
     //
     // Оброботка действий пользователя при регистрации.
     if (isset($_POST['registration'])) {
         // Если данные введены верно.
         if (!$this->unValidForm()) {
             USER::add($this->userData);
             $message = '<span class="succes-reg">Вы успешно зарегистрировались! Для активации пользователя Вам необходимо перейти по ссылке высланной на Ваш электронный адрес <strong>' . $this->userData['email'] . '</strong></span>';
             $form = false;
             // Рассылаем письма со ссылкой для подтверждения регистрации.
             $this->_sendActivationMail($this->userData['email']);
         } else {
             $error = $this->error;
             $form = true;
         }
     }
     // Обработка действий перехода по ссылки.
     if (URL::getQueryParametr('id')) {
         $userInfo = USER::getUserById(URL::getQueryParametr('id'));
         $hash = URL::getQueryParametr('sec');
         // Если присланный хэш совпадает с хэшом из БД для соответствующего id.
         if ($userInfo->restore == $hash) {
             // Меняет в БД случейным образом хэш, делая невозможным повторный переход по ссылки.
             $this->fPass->sendHashToDB($userInfo->email, $this->fPass->getHash('0'));
             $message = 'Ваша учетная запись активирована. Теперь Вы можете <a href="' . SITE . '/enter">войти в личный кабинет</a> используя логин и пароль заданный при регистрации.';
             $form = false;
             $this->fPass->activateUser(URL::getQueryParametr('id'));
         } else {
             $error = 'Некорректная ссылка. Повторите активацию!';
             $form = false;
         }
     }
     // Обработка действий при запросе на повторную активацию.
     if ($_POST['reActivate']) {
         $email = URL::getQueryParametr('activateEmail');
         if (USER::getUserInfoByEmail($email)) {
             $this->_sendActivationMail($email);
             $message = 'Для активации пользователя Вам необходимо перейти по ссылке высланной на Ваш электронный адрес ' . $this->userData['email'];
             $form = false;
         } else {
             $error = 'К сожалению, такой логин не найден. Если вы уверены, что данный логин существует, свяжитесь, пожалуйста, с нами.';
             $form = false;
         }
     }
     $this->data = array('error' => $error, 'message' => $message, 'form' => $form, 'meta_title' => 'Регистрация', 'meta_keywords' => !empty($model->currentCategory['meta_keywords']) ? $model->currentCategory['meta_keywords'] : "регистрация, зарегистрироваться", 'meta_desc' => !empty($model->currentCategory['meta_desc']) ? $model->currentCategory['meta_desc'] : "Зарегистрируйтесь в системе, чтобы получить дополнительные возможности, такие как просмотр состояния заказа");
 }
예제 #4
0
 /**
  * Если заказ оформляется впервые на нового покупателя, то создает новую запись в таблице пользователей.     
  */
 public function addNewUser()
 {
     // Если заказ производит новый пользователь, то регистрируем его
     if (MG::getSetting('autoRegister') == "true") {
         if ($this->newUser) {
             USER::add(array('email' => $this->email, 'role' => 2, 'name' => $this->fio ? $this->fio : 'Пользователь', 'pass' => crypt(time()), 'address' => $this->address, 'phone' => $this->phone, 'ip' => $this->ip, 'nameyur' => $_POST['yur_info']['nameyur'], 'adress' => $_POST['yur_info']['adress'], 'inn' => $_POST['yur_info']['inn'], 'kpp' => $_POST['yur_info']['kpp'], 'bank' => $_POST['yur_info']['bank'], 'bik' => $_POST['yur_info']['bik'], 'ks' => $_POST['yur_info']['ks'], 'rs' => $_POST['yur_info']['rs']));
         }
     }
 }
예제 #5
0
 /**
  * Сохраняет и обновляет параметры заказа.
  * @return type
  */
 public function saveOrder()
 {
     $this->messageSucces = $this->lang['ACT_SAVE_ORD'];
     $this->messageError = $this->lang['ACT_SAVE_ORDER'];
     if (count($_POST['order_content']) != $_POST['orderPositionCount']) {
         $this->messageError = 'Невозможно передать столь большой заказ на ваш сервер. Необходимо изменить настройки web-сервера!';
         return false;
     }
     unset($_POST['orderPositionCount']);
     // Cобираем воедино все параметры от юр. лица если они были переданы, для записи в информацию о заказе.
     $_POST['yur_info'] = '';
     $informUser = $_POST['inform_user'];
     unset($_POST['inform_user']);
     if (!empty($_POST['inn'])) {
         $_POST['yur_info'] = array('email' => htmlspecialchars($_POST['orderEmail']), 'name' => htmlspecialchars($_POST['orderBuyer']), 'address' => htmlspecialchars($_POST['orderAddress']), 'phone' => htmlspecialchars($_POST['orderPhone']), 'inn' => htmlspecialchars($_POST['inn']), 'kpp' => htmlspecialchars($_POST['kpp']), 'nameyur' => htmlspecialchars($_POST['nameyur']), 'adress' => htmlspecialchars($_POST['adress']), 'bank' => htmlspecialchars($_POST['bank']), 'bik' => htmlspecialchars($_POST['bik']), 'ks' => htmlspecialchars($_POST['ks']), 'rs' => htmlspecialchars($_POST['rs']));
     }
     $model = new Models_Order();
     // Обновление.
     if (!empty($_POST['id'])) {
         unset($_POST['inn']);
         unset($_POST['kpp']);
         unset($_POST['nameyur']);
         unset($_POST['adress']);
         unset($_POST['bank']);
         unset($_POST['bik']);
         unset($_POST['ks']);
         unset($_POST['rs']);
         unset($_POST['ogrn']);
         if (!empty($_POST['yur_info'])) {
             $_POST['yur_info'] = addslashes(serialize($_POST['yur_info']));
         }
         foreach ($_POST['order_content'] as &$item) {
             foreach ($item as &$v) {
                 $v = rawurldecode($v);
             }
         }
         $_POST['delivery_cost'] = MG::numberDeFormat($_POST['delivery_cost']);
         $_POST['order_content'] = addslashes(serialize($_POST['order_content']));
         $model->refreshCountAfterEdit($_POST['id'], $_POST['order_content']);
         $model->updateOrder($_POST, $informUser);
     } else {
         $newUserData = array('email' => htmlspecialchars($_POST['user_email']), 'role' => 2, 'name' => htmlspecialchars($_POST['name_buyer']), 'pass' => crypt(time()), 'address' => htmlspecialchars($_POST['address']), 'phone' => htmlspecialchars($_POST['phone']), 'inn' => htmlspecialchars($_POST['inn']), 'kpp' => htmlspecialchars($_POST['kpp']), 'nameyur' => htmlspecialchars($_POST['nameyur']), 'adress' => htmlspecialchars($_POST['adress']), 'bank' => htmlspecialchars($_POST['bank']), 'bik' => htmlspecialchars($_POST['bik']), 'ks' => htmlspecialchars($_POST['ks']), 'rs' => htmlspecialchars($_POST['rs']));
         if ($_POST['user_email'] != '') {
             USER::add($newUserData);
         }
         $orderArray = $model->addOrder($_POST);
         $id = $orderArray['id'];
         $orderNumber = $orderArray['orderNumber'];
         $this->messageSucces = $this->lang['ACT_SAVE_ORD'] . ' № ' . $orderNumber;
         $_POST['id'] = $id;
         $_POST['newId'] = $id;
         $_POST['number'] = $orderNumber;
         $_POST['date'] = MG::dateConvert(date('d.m.Y H:i'));
     }
     $_POST['count'] = $model->getNewOrdersCount();
     $_POST['date'] = MG::dateConvert(date('d.m.Y H:i'));
     $this->data = $_POST;
     return true;
 }
예제 #6
0
/**
 * Регистрация на сайте и в таблице uLogin
 * @param Array $u_user - данные о пользователе, полученные от uLogin
 * @param int $in_db - при значении 1 необходимо переписать данные в таблице uLogin
 * @return bool|int|Error
 */
function ulogin_registration_user($u_user, $in_db = 0)
{
    if (!isset($u_user['email'])) {
        die("Через данную форму выполнить вход/регистрацию невозможно. </br>" . "Сообщиете администратору сайта о следующей ошибке: </br></br>" . "Необходимо указать <b>email</b> в возвращаемых полях <b>uLogin</b>");
    }
    $u_user['network'] = isset($u_user['network']) ? $u_user['network'] : '';
    $u_user['phone'] = isset($u_user['phone']) ? $u_user['phone'] : '';
    // данные о пользователе есть в ulogin_table, но отсутствуют в Базе
    if ($in_db == 1) {
        DB::query("DELETE FROM " . PREFIX . "ulogin   WHERE `identity` = " . DB::quote($u_user['identity']));
    }
    $user_id = USER::getUserInfoByEmail($u_user['email']);
    $user_id = $user_id->id;
    // $check_m_user == true -> есть пользователь с таким email
    $check_m_user = $user_id > 0 ? true : false;
    $current_user = USER::isAuth() ? USER::getThis() : 0;
    // $isLoggedIn == true -> ползователь онлайн
    $isLoggedIn = isset($current_user->id) && $current_user->id > 0 ? true : false;
    if (!$check_m_user && !$isLoggedIn) {
        // отсутствует пользователь с таким email в базе -> регистрация
        $date = explode('.', $u_user['bdate']);
        $insert_user = array('pass' => md5(microtime(true)), 'email' => $u_user['email'], 'role' => 2, 'name' => $u_user['first_name'], 'sname' => $u_user['last_name'], 'address' => '', 'phone' => $u_user['phone'], 'birthday' => $date['2'] . '-' . $date['1'] . '-' . $date['0'], 'activity' => 1);
        $user_id = USER::add($insert_user);
        $user_id = DB::insertId();
        $userData = USER::getUserById($user_id);
        $res = DB::query("INSERT INTO " . PREFIX . "ulogin (user_id, identity, network)\n\t\tVALUES (" . DB::quote($user_id) . "," . DB::quote($u_user['identity']) . "," . DB::quote($u_user['network']) . ")");
        return $userData->id;
    } else {
        // существует пользователь с таким email или это текущий пользователь
        if (!isset($u_user["verified_email"]) || intval($u_user["verified_email"]) != 1) {
            die('<head></head><body><script src="//ulogin.ru/js/ulogin.js"  type="text/javascript"></script><script type="text/javascript">uLogin.mergeAccounts("' . $_POST['token'] . '")</script>' . "Электронный адрес данного аккаунта совпадает с электронным адресом существующего пользователя. <br>Требуется подтверждение на владение указанным email.</br></br>" . "Подтверждение аккаунта" . "</body>");
        }
        if (intval($u_user["verified_email"]) == 1) {
            $user_id = $isLoggedIn ? $current_user->id : $user_id;
            $other_u = DB::query("SELECT identity FROM " . PREFIX . "ulogin where `user_id` = " . DB::quote($user_id));
            $other_u = DB::fetchAssoc($other_u);
            if ($other_u) {
                if (!$isLoggedIn && !isset($u_user['merge_account'])) {
                    die('<head></head><body><script src="//ulogin.ru/js/ulogin.js"  type="text/javascript"></script><script type="text/javascript">uLogin.mergeAccounts("' . $_POST['token'] . '","' . $other_u['identity'] . '")</script>' . "С данным аккаунтом уже связаны данные из другой социальной сети. <br>Требуется привязка новой учётной записи социальной сети к этому аккаунту.<br/>" . "Синхронизация аккаунтов" . "</body>");
                }
            }
            DB::query("INSERT INTO " . PREFIX . "ulogin (user_id, identity, network)\n\t\t\tVALUES (" . DB::quote($user_id) . "," . DB::quote($u_user['identity']) . "," . DB::quote($u_user['network']) . ")");
            return $user_id;
        }
    }
    return false;
}