/**
 * Авторизация пользователя и формирование http://bx.ecklos.ru/данных в массив
 */
function UserAuthorize()
{
    if (isset($_COOKIE['user_id']) && isset($_COOKIE['user_hash'])) {
        $auth_err = 0;
        $user_id = ClearValueIntval($_COOKIE['user_id']);
        $user_hash = ClearValueString($_COOKIE['user_hash'], 32, true);
        if ($user_id >= 1) {
            $auth_err++;
        } elseif (strlen($user_hash) != 32 || !ctype_alnum($user_hash)) {
            // Хеш строго из 32х знаков и только латиница-цифры
            $auth_err++;
        }
        if ($auth_err > 0) {
            $conn = dbconn('b_users');
            // Подключаемся к шарду, на котором находиться таблица
            if ($conn) {
                $query = 'SELECT `LOGIN`, `TYPE` FROM `b_users` WHERE `ID` = ' . $user_id . ' AND `HASH` = "' . _in_base($user_hash) . '"';
                if ($result = $conn->query($query)) {
                    if ($result->num_rows == 1) {
                        if ($arUser = $result->fetch_array(MYSQLI_ASSOC)) {
                            $_SESSION["SESS_AUTH"]["AUTHORIZED"] = "Y";
                            $_SESSION["SESS_AUTH"]["USER_ID"] = $user_id;
                            $_SESSION["SESS_AUTH"]["USER_LOGIN"] = $arUser['LOGIN'];
                            $_SESSION["SESS_AUTH"]["USER_TYPE"] = $arUser['TYPE'];
                            return true;
                        }
                    }
                }
            } else {
                header('Location: /update/');
            }
        }
        UserLogout();
    }
    return false;
}
Esempio n. 2
0
<?php

require_once $_SERVER['DOCUMENT_ROOT'] . '/local/header.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php';
$loader = new Twig_Loader_Filesystem($_SERVER['DOCUMENT_ROOT'] . '/admin/templates/');
$twig = new Twig_Environment($loader, $arTwigConfig);
$twig->addExtension(new Twig_Extension_Debug());
/** @var CDataBase Объект подключения к базе данных */
$db = new CDataBase($arConnect);
/** @var string Тип материала */
$type = ClearValueString($_GET['type'], 50, true);
/** @var string Числовой идентификатор материала */
$id_item = ClearValueIntval($_GET['id']);
if (!empty($type)) {
    switch ($type) {
        case 'article':
            /** @var string Название шаблона */
            $tpl = 'edit-article.html';
            if ($id_item > 0) {
                if (isset($_POST)) {
                    $isUpdate = $db->Update('articles', $_POST, array('ID' => $id_item));
                }
                $query = $db->Query('SELECT * FROM `articles` WHERE `ID` = ' . $id_item);
                if ($query->num_rows == 1) {
                    if ($result = $query->fetch_assoc()) {
                        $content['article']['detail'] = $result;
                    }
                }
            } else {
                if (isset($_POST)) {
                    $db->Insert('articles', $_POST);
/**
 * Создание нового заказа
 * Возвращается код добавленного заказа или false в случае ошибки.
 */
function NewOrder($arParams)
{
    if (is_array($arParams) && UserGetType() == 'C') {
        $name = ClearValueString($arParams['order_name'], 120);
        $text = ClearValueString($arParams['order_text']);
        $price = ClearValueIntval($arParams['order_price'], array('min' => 500, 'max' => 999999));
        if (strlen($name) > 0 && strlen($text) > 0 && !is_null($price)) {
            $tax_value = GetTaxValue();
            $tax_price = GetTaxPrice($price);
            $conn = dbconn('b_orders');
            // Подключаемся к шарду, на котором находиться таблица
            if ($conn) {
                $query = 'INSERT INTO `b_orders`
                    (`ID`, `DATE_INSERT`, `NAME`, `DESCRIPTION`, `PRICE`, `TAX_VALUE`, `TAX_PRICE`, `CUSTOMER_ID`)
                    VALUES
                    (NULL, NOW(), "' . _in_base($name) . '", "' . _in_base($text) . '", ' . $price . ', ' . $tax_value . ',
                    ' . $tax_price . ', ' . UserGetID() . ')';
                if ($conn->query($query)) {
                    return $conn->insert_id;
                } else {
                    return $conn->erorr;
                }
            } else {
                return 'DB_CONNECT_ERROR';
            }
        }
    }
    return false;
}
Esempio n. 4
0
<?php

require_once __DIR__ . '/local/header.php';
require_once __DIR__ . '/vendor/autoload.php';
$loader = new Twig_Loader_Filesystem(__DIR__ . '/templates/compress/');
$twig = new Twig_Environment($loader, $arTwigConfig);
$twig->addExtension(new Twig_Extension_Debug());
$pageProperty = new CPageProperty('index');
/** @var CDataBase Объект подключения к базе данных */
$db = new CDataBase($arConnect);
if (isset($_GET['param'])) {
    /** @var string Символьный код статьи */
    $param = ClearValueString($_GET['param'], 50, true);
    if (!is_null($param)) {
        $query = $db->Query('SELECT * FROM `articles` WHERE `CODE` = ' . $db->escape($param));
        if ($query->num_rows == 1) {
            if ($result = $query->fetch_assoc()) {
                $content['article']['detail'] = $result;
                $pageProperty->Replace($result);
            }
        } else {
            PageNotFound();
        }
    }
} else {
    $query = $db->Query('SELECT `CODE`, `HEADER`, `PREVIEW` FROM `articles` WHERE `PUBLISH` = 1 ORDER BY `DATE_CREATE` DESC');
    while ($result = $query->fetch_assoc()) {
        $content['article']['list'][] = $result;
    }
}
TwigKeysStrtolower($content);
Esempio n. 5
0
<?php

require_once $_SERVER["DOCUMENT_ROOT"] . "/local/header.php";
if (UserIsAuthorized()) {
    header('Location: /dashboard/');
}
/**
 * Преобразуем объекты JSON в ассоциативные массивы
 */
if (isset($_POST) && $_SERVER['REQUEST_METHOD'] == 'POST') {
    $arRequest = array('STATUS' => 'ERROR', 'MESSAGE' => '');
    $arFields = json_decode($_POST['json'], true);
    $user_login = ClearValueString($arFields['login'], 20, true);
    $user_password = ClearValueString($arFields['password'], 20, true);
    $user_remember = filter_var($arFields['remember'], FILTER_VALIDATE_BOOLEAN);
    if (!ctype_alnum($arFields['login'])) {
        $arRequest['MESSAGE'] = 'Логин должен состоять только из латинских букв и цифр';
    } elseif (strlen($user_login) < 3) {
        $arRequest['MESSAGE'] = 'Длина логина от 3х до 20 символов';
    } elseif (strlen($user_password) < 3) {
        $arRequest['MESSAGE'] = 'Длина пароля от 3х до 20 символов';
    }
    /**
     * Если ошибок не найдено, авторизуем пользователя
     */
    if (empty($arRequest['MESSAGE'])) {
        $conn = dbconn('b_users');
        // Подключаемся к шарду, на котором находиться таблица
        if ($conn) {
            $query = 'SELECT COUNT(`ID`), `ID` FROM `b_users` WHERE `LOGIN` = "' . _in_base($user_login) . '" AND `PASSWORD` = "' . md5($user_password) . '"';
            if ($result = $conn->query($query)) {