63 lines
1.3 KiB
PHP
63 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Core;
|
|
|
|
final class Session
|
|
{
|
|
public function start(): void
|
|
{
|
|
if (session_status() === PHP_SESSION_NONE) {
|
|
session_set_cookie_params([
|
|
'httponly' => true,
|
|
'samesite' => 'Lax',
|
|
'secure' => (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'),
|
|
'path' => '/',
|
|
]);
|
|
|
|
session_start();
|
|
}
|
|
}
|
|
|
|
public function get(string $key, mixed $default = null): mixed
|
|
{
|
|
return $_SESSION[$key] ?? $default;
|
|
}
|
|
|
|
public function put(string $key, mixed $value): void
|
|
{
|
|
$_SESSION[$key] = $value;
|
|
}
|
|
|
|
public function forget(string $key): void
|
|
{
|
|
unset($_SESSION[$key]);
|
|
}
|
|
|
|
public function flash(string $key, mixed $value): void
|
|
{
|
|
$_SESSION['_flash'][$key] = $value;
|
|
}
|
|
|
|
public function pullFlash(string $key, mixed $default = null): mixed
|
|
{
|
|
$value = $_SESSION['_flash'][$key] ?? $default;
|
|
unset($_SESSION['_flash'][$key]);
|
|
|
|
return $value;
|
|
}
|
|
|
|
public function regenerate(): void
|
|
{
|
|
session_regenerate_id(true);
|
|
}
|
|
|
|
public function invalidate(): void
|
|
{
|
|
$_SESSION = [];
|
|
|
|
if (session_status() === PHP_SESSION_ACTIVE) {
|
|
session_destroy();
|
|
}
|
|
}
|
|
}
|