|
- <?php
-
- declare(strict_types=1);
-
- namespace Core\Http;
-
- class Session
- {
- public function start(): void
- {
- if (session_status() !== PHP_SESSION_NONE) {
- return;
- }
-
- session_save_path('/tmp');
-
- $secure = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off';
-
- session_set_cookie_params([
- 'lifetime' => 0,
- 'path' => '/',
- 'domain' => '',
- 'secure' => $secure,
- 'httponly' => true,
- 'samesite' => 'Lax',
- ]);
-
- session_start();
- }
-
- public function get(string $key, mixed $default = null): mixed
- {
- return $_SESSION[$key] ?? $default;
- }
-
- public function set(string $key, mixed $value): void
- {
- $_SESSION[$key] = $value;
- }
-
- public function has(string $key): bool
- {
- return isset($_SESSION[$key]);
- }
-
- public function forget(string $key): void
- {
- unset($_SESSION[$key]);
- }
-
- public function regenerate(): void
- {
- session_regenerate_id(true);
- }
-
- public function destroy(): void
- {
- $_SESSION = [];
-
- if (ini_get('session.use_cookies')) {
- $params = session_get_cookie_params();
- setcookie(
- session_name(),
- '',
- time() - 42000,
- $params['path'],
- $params['domain'],
- $params['secure'],
- $params['httponly']
- );
- }
-
- session_destroy();
- }
- }
|