예제 #1
0
 function __construct()
 {
     if (User::isAuth()) {
         MG::redirect('/');
     }
     // Шаг первый.
     $form = 1;
     $fPass = new Models_Forgotpass();
     // Ввторой шаг, производящий проверку введеного электронного адреса.
     if (URL::getQueryParametr('forgotpass')) {
         $email = URL::getQueryParametr('email');
         if ($userInfo = USER::getUserInfoByEmail($email)) {
             //Если введенных адрес совпадает с зарегистрированным в системе, то
             $form = 0;
             $message = 'Инструкция по восстановлению пароля была отправлена на <strong>' . $email . '</strong>';
             $hash = $fPass->getHash($email);
             //а) Случайный хэш заносится в БД.
             $fPass->sendHashToDB($email, $hash);
             $siteName = MG::getOption('sitename');
             $emailMessage = MG::layoutManager('email_forgot', array('siteName' => $siteName, 'email' => $email, 'hash' => $hash, 'userId' => $userInfo->id, 'link' => SITE . '/forgotpass?sec=' . $hash . '&id=' . $userInfo->id));
             $emailData = array('nameFrom' => $siteName, 'emailFrom' => MG::getSetting('noReplyEmail'), 'nameTo' => 'Пользователю сайта ' . $siteName, 'emailTo' => $email, 'subject' => 'Восстановление пароля на сайте ' . $siteName, 'body' => $emailMessage, 'html' => true);
             //б) На указанный электронный адрес отправляется письмо со сылкой на страницу восстановления пароля.
             $fPass->sendUrlToEmail($emailData);
         } else {
             $form = 0;
             $error = 'К сожалению, такой логин не найден<br>
       Если вы уверены, что данный логин существует, пожалуйста, свяжитесь с нами.';
         }
     }
     // Шаг 3. Обработка перехода по ссылки. Принимается id пользователя и сгенерированный хэш.
     if ($_GET) {
         $userInfo = USER::getUserById(URL::getQueryParametr('id'));
         $hash = URL::getQueryParametr('sec');
         // Если присланный хэш совпадает с хэшом из БД для соответствующего id.
         if ($userInfo->restore == $hash) {
             $form = 2;
             // Меняе в БД случайным образом хэш, делая невозможным повторный переход по ссылки.
             $fPass->sendHashToDB($userInfo->email, $fPass->getHash('0'));
             $_SESSION['id'] = URL::getQueryParametr('id');
         } else {
             $form = 0;
             $error = 'Некорректная ссылка. Повторите заново запрос восстановления пароля.';
         }
     }
     // Шаг 4. обрабатываем запрос на ввод нового пароля
     if (URL::getQueryParametr('chengePass')) {
         $form = 2;
         $person = new Models_Personal();
         $msg = $person->changePass(URL::getQueryParametr('newPass'), $_SESSION['id'], true);
         if ('Пароль изменен' == $msg) {
             $form = 0;
             $message = $msg . '! ' . 'Вы можете войти в личный кабинет по адресу <a href="' . SITE . '/enter" >' . SITE . '/enter</a>';
             $fPass->activateUser($_SESSION['id']);
             unset($_SESSION['id']);
         } else {
             $error = $msg;
         }
     }
     $this->data = array('error' => $error, 'message' => $message, 'form' => $form, 'meta_title' => 'Восстановление пароля', 'meta_keywords' => $model->currentCategory['meta_keywords'] ? $model->currentCategory['meta_keywords'] : "забыли пароль, восстановить пароль, восстановление пароля", 'meta_desc' => $model->currentCategory['meta_desc'] ? $model->currentCategory['meta_desc'] : "Если вы забыли пароль от личного кабинета, его модно восстановить с помощью формы восстановления паролей.");
 }
예제 #2
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'] : "Зарегистрируйтесь в системе, чтобы получить дополнительные возможности, такие как просмотр состояния заказа");
 }
예제 #3
0
파일: user.php 프로젝트: WinGood/24karcher
 /**
  * Обновляет пользователя учетную запись пользователя.
  * @param $id - id пользователя.
  * @param $data - массив значений для вставки  в БД [Поле => Значение].
  * @param $authRewrite - false = перезапишет данные в сессии детущего пользователя, на полученные у $data.
  * @return void
  */
 public static function update($id, $data, $authRewrite = false)
 {
     $userInfo = USER::getUserById($id);
     foreach ($data as $k => $v) {
         if ($k !== 'pass') {
             $v = htmlspecialchars_decode($v);
             $data[$k] = htmlspecialchars($v);
         }
     }
     //только если пытаемся разжаловать админа, проверяем,
     // не является ли он последним админом
     // Без админов никак незя!
     if ($userInfo->role == '1' && $data['role'] != '1') {
         $countAdmin = DB::query('
  SELECT count(id) as "count"
   FROM `' . PREFIX . 'user`    
   WHERE role = 1
 ');
         if ($row = DB::fetchAssoc($countAdmin)) {
             if ($row['count'] == 1) {
                 // остался один админ
                 $data['role'] = 1;
                 // не даем разжаловать админа, уж лучше плохой чем никакого :-)
             }
         }
     }
     DB::query('
  UPDATE `' . PREFIX . 'user`
  SET ' . DB::buildPartQuery($data) . '
  WHERE id = ' . DB::quote($id));
     if (!$authRewrite) {
         foreach ($data as $k => $v) {
             self::$_instance->auth->{$k} = $v;
         }
         $_SESSION['user'] = self::$_instance->auth;
     }
     return true;
 }
예제 #4
0
 /**
  * Получает параметры редактируемого пользователя.
  */
 public function getUserData()
 {
     $this->messageError = $this->lang['ACT_GET_USER'];
     $response = USER::getUserById($_POST['id']);
     foreach ($response as $k => $v) {
         if ($k != 'pass') {
             $response->{$k} = htmlspecialchars_decode($v);
         }
     }
     $this->data = $response;
     return false;
 }
예제 #5
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;
}
예제 #6
0
<?php

session_start();
?>
<!DOCTYPE html>
<?php 
include_once 'header.php';
require_once 'classes/userClass.php';
$userObj = new USER();
$userInfo = $userObj->getUserById($_SESSION['result']['id']);
//echo ""; print_r($userInfo); exit;
?>
<div class="panel panel-primary" style="width:35%;margin:0 auto; margin-top:2%">
<div class="panel-heading"><h3>User Profile</h3></div>
<div class="panel-body" style="height:40%; text-align:center;" >
<p class="bg-info" id="msg"></p>
 <form class="form-horizontal" role="form" id="signupForm" method="post" action="function.php?formType=signup">
 <div class="form-group">
    <label class="control-label col-sm-3" for="name">Name:</label>
    <div class="col-sm-9">
     <?php 
echo $userInfo['result']['name'];
?>
    </div>
  </div>
  <div class="form-group">
    <label class="control-label col-sm-3" for="username">Username:</label>
    <div class="col-sm-9">
      <?php 
echo $userInfo['result']['username'];
?>