You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
3.9 KiB
PHP
154 lines
3.9 KiB
PHP
<?php
|
|
|
|
namespace Safe;
|
|
|
|
use Safe\Exceptions\SessionException;
|
|
|
|
/**
|
|
* session_abort finishes session without saving
|
|
* data. Thus the original values in session data are kept.
|
|
*
|
|
* @throws SessionException
|
|
*
|
|
*/
|
|
function session_abort(): void
|
|
{
|
|
error_clear_last();
|
|
$result = \session_abort();
|
|
if ($result === false) {
|
|
throw SessionException::createFromPhpError();
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* session_decode decodes the serialized session data provided in
|
|
* $data, and populates the $_SESSION superglobal
|
|
* with the result.
|
|
*
|
|
* By default, the unserialization method used is internal to PHP, and is not the same as unserialize.
|
|
* The serialization method can be set using session.serialize_handler.
|
|
*
|
|
* @param string $data The encoded data to be stored.
|
|
* @throws SessionException
|
|
*
|
|
*/
|
|
function session_decode(string $data): void
|
|
{
|
|
error_clear_last();
|
|
$result = \session_decode($data);
|
|
if ($result === false) {
|
|
throw SessionException::createFromPhpError();
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* In order to kill the session altogether, the
|
|
* session ID must also be unset. If a cookie is used to propagate the
|
|
* session ID (default behavior), then the session cookie must be deleted.
|
|
* setcookie may be used for that.
|
|
*
|
|
* When session.use_strict_mode
|
|
* is enabled. You do not have to remove obsolete session ID cookie because
|
|
* session module will not accept session ID cookie when there is no
|
|
* data associated to the session ID and set new session ID cookie.
|
|
* Enabling session.use_strict_mode
|
|
* is recommended for all sites.
|
|
*
|
|
* @throws SessionException
|
|
*
|
|
*/
|
|
function session_destroy(): void
|
|
{
|
|
error_clear_last();
|
|
$result = \session_destroy();
|
|
if ($result === false) {
|
|
throw SessionException::createFromPhpError();
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* session_regenerate_id will replace the current
|
|
* session id with a new one, and keep the current session information.
|
|
*
|
|
* When session.use_trans_sid
|
|
* is enabled, output must be started after session_regenerate_id
|
|
* call. Otherwise, old session ID is used.
|
|
*
|
|
* @param bool $delete_old_session Whether to delete the old associated session file or not.
|
|
* You should not delete old session if you need to avoid
|
|
* races caused by deletion or detect/avoid session hijack
|
|
* attacks.
|
|
* @throws SessionException
|
|
*
|
|
*/
|
|
function session_regenerate_id(bool $delete_old_session = false): void
|
|
{
|
|
error_clear_last();
|
|
$result = \session_regenerate_id($delete_old_session);
|
|
if ($result === false) {
|
|
throw SessionException::createFromPhpError();
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* session_reset reinitializes a session with
|
|
* original values stored in session storage. This function requires an active session and
|
|
* discards changes in $_SESSION.
|
|
*
|
|
* @throws SessionException
|
|
*
|
|
*/
|
|
function session_reset(): void
|
|
{
|
|
error_clear_last();
|
|
$result = \session_reset();
|
|
if ($result === false) {
|
|
throw SessionException::createFromPhpError();
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* The session_unset function frees all session variables
|
|
* currently registered.
|
|
*
|
|
* @throws SessionException
|
|
*
|
|
*/
|
|
function session_unset(): void
|
|
{
|
|
error_clear_last();
|
|
$result = \session_unset();
|
|
if ($result === false) {
|
|
throw SessionException::createFromPhpError();
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* End the current session and store session data.
|
|
*
|
|
* Session data is usually stored after your script terminated without the
|
|
* need to call session_write_close, but as session data
|
|
* is locked to prevent concurrent writes only one script may operate on a
|
|
* session at any time. When using framesets together with sessions you will
|
|
* experience the frames loading one by one due to this locking. You can
|
|
* reduce the time needed to load all the frames by ending the session as
|
|
* soon as all changes to session variables are done.
|
|
*
|
|
* @throws SessionException
|
|
*
|
|
*/
|
|
function session_write_close(): void
|
|
{
|
|
error_clear_last();
|
|
$result = \session_write_close();
|
|
if ($result === false) {
|
|
throw SessionException::createFromPhpError();
|
|
}
|
|
}
|