Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

74 wiersze
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. $secure = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off';
  12. session_set_cookie_params([
  13. 'lifetime' => 0,
  14. 'path' => '/',
  15. 'domain' => '',
  16. 'secure' => $secure,
  17. 'httponly' => true,
  18. 'samesite' => 'Lax',
  19. ]);
  20. session_start();
  21. }
  22. public function get(string $key, mixed $default = null): mixed
  23. {
  24. return $_SESSION[$key] ?? $default;
  25. }
  26. public function set(string $key, mixed $value): void
  27. {
  28. $_SESSION[$key] = $value;
  29. }
  30. public function has(string $key): bool
  31. {
  32. return isset($_SESSION[$key]);
  33. }
  34. public function forget(string $key): void
  35. {
  36. unset($_SESSION[$key]);
  37. }
  38. public function regenerate(): void
  39. {
  40. session_regenerate_id(true);
  41. }
  42. public function destroy(): void
  43. {
  44. $_SESSION = [];
  45. if (ini_get('session.use_cookies')) {
  46. $params = session_get_cookie_params();
  47. setcookie(
  48. session_name(),
  49. '',
  50. time() - 42000,
  51. $params['path'],
  52. $params['domain'],
  53. $params['secure'],
  54. $params['httponly']
  55. );
  56. }
  57. session_destroy();
  58. }
  59. }

Powered by TurnKey Linux.