| Path : /var/www/html/thb_loan_system/vendor/cartalyst/sentinel/src/Sessions/ |
|
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
| Current File : //var/www/html/thb_loan_system/vendor/cartalyst/sentinel/src/Sessions/NativeSession.php |
<?php
/*
* Part of the Sentinel package.
*
* NOTICE OF LICENSE
*
* Licensed under the 3-clause BSD License.
*
* This source file is subject to the 3-clause BSD License that is
* bundled with this package in the LICENSE file.
*
* @package Sentinel
* @version 6.0.0
* @author Cartalyst LLC
* @license BSD License (3-clause)
* @copyright (c) 2011-2022, Cartalyst LLC
* @link https://cartalyst.com
*/
namespace Cartalyst\Sentinel\Sessions;
class NativeSession implements SessionInterface
{
/**
* The session key.
*
* @var string
*/
protected $key = 'cartalyst_sentinel';
/**
* Constructor.
*
* @param string $key
*
* @return void
*/
public function __construct(string $key = null)
{
$this->key = $key;
$this->startSession();
}
/**
* Called upon destruction of the native session handler.
*
* @return void
*/
public function __destruct()
{
$this->writeSession();
}
/**
* {@inheritdoc}
*/
public function put($value): void
{
$this->setSession($value);
}
/**
* {@inheritdoc}
*/
public function get()
{
return $this->getSession();
}
/**
* {@inheritdoc}
*/
public function forget(): void
{
$this->forgetSession();
}
/**
* Starts the session if it does not exist.
*
* @return void
*/
protected function startSession(): void
{
// Check that the session hasn't already been started
if (session_status() != PHP_SESSION_ACTIVE && ! headers_sent()) {
session_start();
}
}
/**
* Writes the session.
*
* @return void
*/
protected function writeSession(): void
{
session_write_close();
}
/**
* Unserializes a value from the session and returns it.
*
* @return mixed
*/
protected function getSession()
{
if (isset($_SESSION[$this->key])) {
$value = $_SESSION[$this->key];
if ($value) {
return unserialize($value);
}
}
}
/**
* Interacts with the $_SESSION global to set a property on it.
* The property is serialized initially.
*
* @param mixed $value
*
* @return void
*/
protected function setSession($value): void
{
$_SESSION[$this->key] = serialize($value);
}
/**
* Forgets the Sentinel session from the global $_SESSION.
*
* @return void
*/
protected function forgetSession(): void
{
if (isset($_SESSION[$this->key])) {
unset($_SESSION[$this->key]);
}
}
}