Esempio n. 1
0
 /**
  *	Если выставлена опция "оборачивать значения", то оборачивает
  *	значение в кавычки, если это строка (и она не "NULL").
  *	Если передается null, возаращается строка NULL. Если число, то оно
  *	не оборачивается кавычками. Если это массив из вышеперечисленного,
  *	делает это для каждого значения массива.
  *	
  *	@author Anthony Boutinov
  *	
  *	@param string|number|null|array &$sql 	Значение для санитизации
  *	@param bool $do_return					Возвращать ли новое значение (true) или изменять саму переменную (false). Поведение по умолчанию: изменять саму переменную.
  *	@param int $max_length					Ограничение на длину значения. По умолчанию, 2048 символов.
  *	@retval typeof($sql)					Возаращаемое значение. По умолчанию, функция ничего не возвращает.
  */
 private function innerSanitize(&$sql, $wrap_values, $do_return, $max_length = null)
 {
     if (!isset($wrap_values)) {
         $wrap_values = true;
     }
     if (!isset($do_return)) {
         $do_return = false;
     }
     if (!isset($max_length)) {
         $max_length = 2048;
     }
     if (is_array($sql)) {
         if ($do_return == true) {
             Error::fatalError('DEBUG Error in DBInterface::innerSanitize(): $do_return == true не поддерживается для массивов!');
         }
         foreach ($sql as $key => $value) {
             $val = $this->conn->real_escape_string($value);
             if (strlen($val) > $max_length) {
                 Notification::add('<b>Warning</b>: trying to sanitize data which is ' . length($val) . ' characters long! Data truncated', 'warning');
                 $val = substr($val, 0, $max_length);
             }
             $sql[$key] = $this->wrapSanitizedValue($val, true);
         }
     } else {
         if (strlen($sql) > $max_length) {
             Notification::add('<b>Warning</b>: trying to sanitize data which is ' . length($sql) . ' characters long! Data truncated', 'warning');
             $sql = substr($sql, 0, $max_length);
         }
         $sql = $this->conn->real_escape_string($sql);
         if ($wrap_values == true) {
             return $this->wrapSanitizedValue($sql, $do_return);
         } else {
             return $sql;
         }
     }
 }
 /**
  *	@author Михаил Полюбай, Anthony Boutinov
  *	
  *	@param string|bool $active			Сделать активным или неактивным ('T', 'F', либо bool значение)
  *	@param int $id_db_user				ID_DB_USER
  */
 public function setActiveDBUser($active, $id_db_user)
 {
     $this->sanitize($active);
     $this->sanitize($id_db_user);
     if ($active === 'T' || $active === true) {
         $active = 'T';
     } else {
         if ($active === 'F' || $active === false) {
             $active = 'F';
         } else {
             Error::fatalError('DEBUG Error: Передан неверный параметр в setActiveDBUser');
         }
     }
     $sql = 'update  CM$DB_USER set IS_ACTIVE="' . $active . '", ID_DB_USER_MODIFIED=' . $this->id_db_user_editor . ' where ID_DB_USER='******'T') {
         // Починить для него недостающие переменные, если с момента его деактивации были добавлены новые VARS в CM$DICITONARY
         $this->fixVarsForOneDBUser($id_db_user);
     }
 }
Esempio n. 3
0
<?php

include 'includes/core/session.php';
if (isset($_POST['form-name'])) {
    // Экран восстановления пароля
    if ($_POST['form-name'] == 'forget-password-recovery-screen') {
        include 'includes/modules/admin-login-forgetPasswordRecovery.php';
        exit;
    } else {
        if ($_POST['form-name'] == 'forget-password-recovery') {
            if (!isset($_POST['login'])) {
                Error::fatalError('DEBUG Error in admin-login.php: login not set!');
            }
            $responce = $database->initiatePasswordReset($_POST['login']);
            if (!$responce) {
                Notification::add('Пользователь с таким логином/email не найден.', 'danger');
            } else {
                $password_reset_link = $BASE_URL . 'admin-login.php?l=' . $responce['LOGIN'] . '&t=' . $responce['PASSWORD_RESET_TOKEN'];
                require_once 'includes/core/mail_config.php';
                $mail->addAddress($responce['EMAIL']);
                $mail->Subject = "Сброс пароля — Re[Spot]";
                $mail->Body = "Для смены пароля перейдите по ссылке:\n{$password_reset_link}\n\nСообщение сгенерировано автоматически.";
                if (!$mail->send()) {
                    Notification::add('Невозможно отправить сообщение.<br>Ошибка Mailer: ' . $mail->ErrorInfo, 'danger');
                } else {
                    Notification::add('Сообщение для сброса пароля отправлено на <strong>' . $responce['EMAIL'] . '</strong>', 'success');
                }
            }
        } else {
            if ($_POST['form-name'] == 'password-reset-set-new') {
                if (isset($_POST['LOGIN']) && isset($_POST['PASSWORD_RESET_TOKEN'])) {
Esempio n. 4
0
                header("Location: {$routerAdmin}");
                exit;
            } else {
                // Если получаются данные от роутера
                if (isset($_POST['router-login']) && isset($_POST['router-password'])) {
                    // Получить данные от роутера для функционирования страницы login
                    $router_login = $_POST['router-login'];
                    $router_pasword = password_hash($_POST['router-password'], PASSWORD_BCRYPT);
                } else {
                    // Если данные роутера записаны в сессии
                    if (isset($_SESSION['router-login']) && isset($_SESSION['router-password'])) {
                        // Возобновить
                        $router_login = $_SESSION['router-login'];
                        $router_pasword = $_SESSION['router-password'];
                    } else {
                        Error::fatalError('Ошибка: Не заданы данные для авторизации.');
                    }
                }
            }
        }
    }
}
// Если есть данные для входа или страница не защищена (в последнем просто подключается к бд)
if ($router_login && $router_pasword || $cli_login && $cli_password || $id_cli || isset($current_page_is_not_protected) && $current_page_is_not_protected || !$router_login && !$router_pasword && !$cli_login && !$cli_password && !$id_cli) {
    $database = new DBWiFiInterface($servername, $username, $password, $dbname, $router_login, $router_pasword, $cli_login, $cli_password, $id_cli);
    // Если пользователь валиден
    if ($database->is_valid()) {
        if ($database->is_router()) {
            $_SESSION['router-login'] = $router_login;
            $_SESSION['router-password'] = $router_pasword;
        } else {
Esempio n. 5
0
<?php

$current_page_is_not_protected = true;
include 'includes/core/session.php';
header("Content-type: image/jpeg");
if (isset($_GET['id_db_user'])) {
    $timestamp = isset($_GET['t']) ? $_GET['t'] : NULL;
    echo $database->getPostImage($_GET['id_db_user'], $timestamp);
} else {
    Error::fatalError('Параметры не заданы');
}
Esempio n. 6
0
<?php

include 'includes/core/session.php';
$protector->protectPageAdminPage();
if ($database == false) {
    Error::fatalError('DEBUG error in includes/base/admin.php: $database not found');
}
// Название компании
$companyName = $database->getValueByShortName('COMPANY_NAME')['VALUE'];
// Постфикс заголовка окна панели управления
$adminPanelTitle = '— Панель управления ' . $companyName;
// Отрисовывать ли на страницу полное содержимое в нормальном виде.
// Менять на false в нужных блоках в страницах-агрегаторах
// (Dashboard, в частности).
$drawFullContent = true;