File manager - Edit - /home/webapp69.cm.in.th/u69319090039/Shop39/core/Session.php
Back
<?php class Session { public static function init(): void { if (session_status() === PHP_SESSION_NONE) { session_name(SESSION_NAME); // Fix cookie path for subdirectory hosting (e.g. /u69319090039/Shop39/) // Without this, CSRF tokens break on POST requests on shared hosting $cookiePath = '/'; if (defined('APP_URL')) { $parsed = parse_url(APP_URL); $cookiePath = rtrim($parsed['path'] ?? '/', '/') . '/'; if (empty($cookiePath) || $cookiePath === '/') { $cookiePath = '/'; } } session_set_cookie_params([ 'lifetime' => SESSION_LIFETIME, 'path' => $cookiePath, 'secure' => isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on', 'httponly' => true, 'samesite' => 'Lax' ]); session_start(); } // Generate CSRF token if not exists if (empty($_SESSION['csrf_token'])) { $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); } } public static function set(string $key, $value): void { self::init(); $_SESSION[$key] = $value; } public static function get(string $key, $default = null) { self::init(); return $_SESSION[$key] ?? $default; } public static function has(string $key): bool { self::init(); return isset($_SESSION[$key]); } public static function remove(string $key): void { self::init(); if (isset($_SESSION[$key])) { unset($_SESSION[$key]); } } public static function destroy(): void { self::init(); session_unset(); session_destroy(); } public static function getCsrfToken(): string { self::init(); return $_SESSION['csrf_token']; } public static function validateCsrfToken(?string $token): bool { self::init(); return !empty($token) && hash_equals($_SESSION['csrf_token'], $token); } public static function setFlash(string $type, string $message): void { self::init(); $_SESSION['flash'][$type] = $message; } public static function getFlash(string $type): ?string { self::init(); if (isset($_SESSION['flash'][$type])) { $msg = $_SESSION['flash'][$type]; unset($_SESSION['flash'][$type]); return $msg; } return null; } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.24 |
proxy
|
phpinfo
|
Settings