File size: 1.67Kb
<?php
if (defined('BOOTSTRAP_LOADED')) {
return;
}
define('BOOTSTRAP_LOADED', true);
if (session_status() == PHP_SESSION_NONE) {
session_start([
'cookie_lifetime' => 86400,
'cookie_httponly' => true,
'cookie_secure' => isset($_SERVER['HTTPS']),
'cookie_samesite' => 'Strict',
]);
}
if (empty($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
require_once __DIR__ . '/db.php';
require_once __DIR__ . '/csrf.php';
if (!function_exists('e')) {
function e($string) {
return htmlspecialchars($string ?? '', ENT_QUOTES, 'UTF-8');
}
}
if (!function_exists('is_logged_in')) {
function is_logged_in() {
return isset($_SESSION['user_id']);
}
}
if (!function_exists('is_admin')) {
function is_admin() {
return isset($_SESSION['user_role']) && $_SESSION['user_role'] === 'admin';
}
}
if (!function_exists('redirect')) {
function redirect($url) {
if (!headers_sent()) {
header("Location: " . $url);
exit;
}
echo '<script>window.location.href="' . htmlspecialchars($url) . '";</script>';
exit;
}
}
date_default_timezone_set('Europe/Chisinau');
if (!defined('BASE_URL')) {
define('BASE_URL', '/');
}
if (!defined('PROJECT_ROOT')) {
define('PROJECT_ROOT', realpath(__DIR__ . '/..'));
}
if (!defined('UPLOAD_DIR')) {
define('UPLOAD_DIR', PROJECT_ROOT . '/uploads/');
if (!file_exists(UPLOAD_DIR)) {
mkdir(UPLOAD_DIR, 0755, true);
}
}
if (!defined('ASSETS_URL')) {
define('ASSETS_URL', BASE_URL . 'assets/');
}
?>