91 lines
2.1 KiB
PHP
91 lines
2.1 KiB
PHP
<?php
|
||
/**
|
||
* File: SessionHelper.php
|
||
* Version: 1.0
|
||
* Path: /app/Utilities/SessionHelper.php
|
||
* Purpose: Utility to simplify session handling, especially flash messages.
|
||
* Project: Wizdom Networks Website
|
||
*/
|
||
|
||
namespace WizdomNetworks\WizeWeb\Utilities;
|
||
|
||
class SessionHelper
|
||
{
|
||
/**
|
||
* Start the PHP session if it hasn’t been started yet.
|
||
*/
|
||
public static function start(): void
|
||
{
|
||
if (session_status() === PHP_SESSION_NONE) {
|
||
session_set_cookie_params([
|
||
'lifetime' => 0,
|
||
'path' => '/',
|
||
'domain' => $_SERVER['HTTP_HOST'], // <- ensures subdomain support
|
||
'secure' => true, // <- required for HTTPS
|
||
'httponly' => true,
|
||
'samesite' => 'Lax'
|
||
]);
|
||
session_start([
|
||
'cookie_secure' => true,
|
||
'cookie_httponly' => true,
|
||
'cookie_samesite' => 'Lax'
|
||
]);
|
||
|
||
Logger::info("Session started manually via SessionHelper.");
|
||
} else {
|
||
Logger::info("Session already active.");
|
||
}
|
||
|
||
Logger::info("Session status: " . session_status());
|
||
}
|
||
|
||
|
||
/**
|
||
* Set a session variable.
|
||
*
|
||
* @param string $key
|
||
* @param mixed $value
|
||
*/
|
||
public static function set(string $key, $value): void
|
||
{
|
||
$_SESSION[$key] = $value;
|
||
}
|
||
|
||
/**
|
||
* Get a session variable (does not unset).
|
||
*
|
||
* @param string $key
|
||
* @param mixed $default
|
||
* @return mixed
|
||
*/
|
||
public static function get(string $key, $default = null)
|
||
{
|
||
return $_SESSION[$key] ?? $default;
|
||
}
|
||
|
||
/**
|
||
* Get and remove a session flash variable.
|
||
*
|
||
* @param string $key
|
||
* @param mixed $default
|
||
* @return mixed
|
||
*/
|
||
public static function flash(string $key, $default = null)
|
||
{
|
||
$value = $_SESSION[$key] ?? $default;
|
||
unset($_SESSION[$key]);
|
||
return $value;
|
||
}
|
||
|
||
/**
|
||
* Check if a session key is set.
|
||
*
|
||
* @param string $key
|
||
* @return bool
|
||
*/
|
||
public static function has(string $key): bool
|
||
{
|
||
return isset($_SESSION[$key]);
|
||
}
|
||
}
|