Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

76 řádky
1.5KB

  1. <?php
  2. declare(strict_types=1);
  3. namespace Core\Http;
  4. class Session
  5. {
  6. public function start(): void
  7. {
  8. if (session_status() !== PHP_SESSION_NONE) {
  9. return;
  10. }
  11. session_save_path('/tmp');
  12. $secure = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off';
  13. session_set_cookie_params([
  14. 'lifetime' => 0,
  15. 'path' => '/',
  16. 'domain' => '',
  17. 'secure' => $secure,
  18. 'httponly' => true,
  19. 'samesite' => 'Lax',
  20. ]);
  21. session_start();
  22. }
  23. public function get(string $key, mixed $default = null): mixed
  24. {
  25. return $_SESSION[$key] ?? $default;
  26. }
  27. public function set(string $key, mixed $value): void
  28. {
  29. $_SESSION[$key] = $value;
  30. }
  31. public function has(string $key): bool
  32. {
  33. return isset($_SESSION[$key]);
  34. }
  35. public function forget(string $key): void
  36. {
  37. unset($_SESSION[$key]);
  38. }
  39. public function regenerate(): void
  40. {
  41. session_regenerate_id(true);
  42. }
  43. public function destroy(): void
  44. {
  45. $_SESSION = [];
  46. if (ini_get('session.use_cookies')) {
  47. $params = session_get_cookie_params();
  48. setcookie(
  49. session_name(),
  50. '',
  51. time() - 42000,
  52. $params['path'],
  53. $params['domain'],
  54. $params['secure'],
  55. $params['httponly']
  56. );
  57. }
  58. session_destroy();
  59. }
  60. }

Powered by TurnKey Linux.