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();
 | 
						|
    }
 | 
						|
}
 |