/var/www/vhosts/ihelp.ro/_OLD/vendor/cakephp/cakephp/src/Http
NameSizeModeActions
Client/-0755rm
Cookie/-0755rm
Exception/-0755rm
Middleware/-0755rm
Session/-0755rm
BaseApplication.php74090644editdlrm
CallbackStream.php15250644editdlrm
Client.php218350644editdlrm
composer.json13980644editdlrm
ControllerFactory.php2300644editdlrm
ControllerFactoryInterface.php15340644editdlrm
CorsBuilder.php59990644editdlrm
LICENSE.txt12040644editdlrm
MiddlewareApplication.php17910644editdlrm
MiddlewareQueue.php89370644editdlrm
README.md29300644editdlrm
Response.php503320644editdlrm
ResponseEmitter.php88860644editdlrm
Runner.php28300644editdlrm
Server.php56690644editdlrm
ServerRequest.php563530644editdlrm
ServerRequestFactory.php126890644editdlrm
Session.php202200644editdlrm
Edit: /var/www/vhosts/ihelp.ro/_OLD/vendor/cakephp/cakephp/src/Http/Session.php (20220B)
[ 'ini' => [ 'session.use_trans_sid' => 0, ], ], 'cake' => [ 'ini' => [ 'session.use_trans_sid' => 0, 'session.serialize_handler' => 'php', 'session.use_cookies' => 1, 'session.save_path' => $tmp . 'sessions', 'session.save_handler' => 'files', ], ], 'cache' => [ 'ini' => [ 'session.use_trans_sid' => 0, 'session.use_cookies' => 1, ], 'handler' => [ 'engine' => 'CacheSession', 'config' => 'default', ], ], 'database' => [ 'ini' => [ 'session.use_trans_sid' => 0, 'session.use_cookies' => 1, 'session.serialize_handler' => 'php', ], 'handler' => [ 'engine' => 'DatabaseSession', ], ], ]; if (isset($defaults[$name])) { if ( PHP_VERSION_ID >= 70300 && ($name !== 'php' || empty(ini_get('session.cookie_samesite'))) ) { $defaults['php']['ini']['session.cookie_samesite'] = 'Lax'; } return $defaults[$name]; } return false; } /** * Constructor. * * ### Configuration: * * - timeout: The time in minutes the session should be valid for. * - cookiePath: The url path for which session cookie is set. Maps to the * `session.cookie_path` php.ini config. Defaults to base path of app. * - ini: A list of php.ini directives to change before the session start. * - handler: An array containing at least the `engine` key. To be used as the session * engine for persisting data. The rest of the keys in the array will be passed as * the configuration array for the engine. You can set the `engine` key to an already * instantiated session handler object. * * @param array $config The Configuration to apply to this session object */ public function __construct(array $config = []) { $config += [ 'timeout' => null, 'cookie' => null, 'ini' => [], 'handler' => [], ]; if ($config['timeout']) { $config['ini']['session.gc_maxlifetime'] = 60 * $config['timeout']; } if ($config['cookie']) { $config['ini']['session.name'] = $config['cookie']; } if (!isset($config['ini']['session.cookie_path'])) { $cookiePath = empty($config['cookiePath']) ? '/' : $config['cookiePath']; $config['ini']['session.cookie_path'] = $cookiePath; } $this->options($config['ini']); if (!empty($config['handler'])) { $class = $config['handler']['engine']; unset($config['handler']['engine']); $this->engine($class, $config['handler']); } $this->_lifetime = (int)ini_get('session.gc_maxlifetime'); $this->_isCLI = (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg'); session_register_shutdown(); } /** * Sets the session handler instance to use for this session. * If a string is passed for the first argument, it will be treated as the * class name and the second argument will be passed as the first argument * in the constructor. * * If an instance of a SessionHandlerInterface is provided as the first argument, * the handler will be set to it. * * If no arguments are passed it will return the currently configured handler instance * or null if none exists. * * @param string|\SessionHandlerInterface|null $class The session handler to use * @param array $options the options to pass to the SessionHandler constructor * @return \SessionHandlerInterface|null * @throws \InvalidArgumentException */ public function engine($class = null, array $options = []): ?SessionHandlerInterface { if ($class === null) { return $this->_engine; } if ($class instanceof SessionHandlerInterface) { return $this->setEngine($class); } $className = App::className($class, 'Http/Session'); if (!$className) { throw new InvalidArgumentException( sprintf('The class "%s" does not exist and cannot be used as a session engine', $class) ); } $handler = new $className($options); if (!($handler instanceof SessionHandlerInterface)) { throw new InvalidArgumentException( 'The chosen SessionHandler does not implement SessionHandlerInterface, it cannot be used as an engine.' ); } return $this->setEngine($handler); } /** * Set the engine property and update the session handler in PHP. * * @param \SessionHandlerInterface $handler The handler to set * @return \SessionHandlerInterface */ protected function setEngine(SessionHandlerInterface $handler): SessionHandlerInterface { if (!headers_sent() && session_status() !== \PHP_SESSION_ACTIVE) { session_set_save_handler($handler, false); } return $this->_engine = $handler; } /** * Calls ini_set for each of the keys in `$options` and set them * to the respective value in the passed array. * * ### Example: * * ``` * $session->options(['session.use_cookies' => 1]); * ``` * * @param array $options Ini options to set. * @return void * @throws \RuntimeException if any directive could not be set */ public function options(array $options): void { if (session_status() === \PHP_SESSION_ACTIVE || headers_sent()) { return; } foreach ($options as $setting => $value) { if (ini_set($setting, (string)$value) === false) { throw new RuntimeException( sprintf('Unable to configure the session, setting %s failed.', $setting) ); } } } /** * Starts the Session. * * @return bool True if session was started * @throws \RuntimeException if the session was already started */ public function start(): bool { if ($this->_started) { return true; } if ($this->_isCLI) { $_SESSION = []; $this->id('cli'); return $this->_started = true; } if (session_status() === \PHP_SESSION_ACTIVE) { throw new RuntimeException('Session was already started'); } if (ini_get('session.use_cookies') && headers_sent()) { return false; } if (!session_start()) { throw new RuntimeException('Could not start the session'); } $this->_started = true; if ($this->_timedOut()) { $this->destroy(); return $this->start(); } return $this->_started; } /** * Write data and close the session * * @return true */ public function close(): bool { if (!$this->_started) { return true; } if ($this->_isCLI) { $this->_started = false; return true; } if (!session_write_close()) { throw new RuntimeException('Could not close the session'); } $this->_started = false; return true; } /** * Determine if Session has already been started. * * @return bool True if session has been started. */ public function started(): bool { return $this->_started || session_status() === \PHP_SESSION_ACTIVE; } /** * Returns true if given variable name is set in session. * * @param string|null $name Variable name to check for * @return bool True if variable is there */ public function check(?string $name = null): bool { if ($this->_hasSession() && !$this->started()) { $this->start(); } if (!isset($_SESSION)) { return false; } if ($name === null) { return (bool)$_SESSION; } return Hash::get($_SESSION, $name) !== null; } /** * Returns given session variable, or all of them, if no parameters given. * * @param string|null $name The name of the session variable (or a path as sent to Hash.extract) * @param mixed $default The return value when the path does not exist * @return mixed|null The value of the session variable, null if session not available, * session not started, or provided name not found in the session. */ public function read(?string $name = null, $default = null) { if ($this->_hasSession() && !$this->started()) { $this->start(); } if (!isset($_SESSION)) { return null; } if ($name === null) { return $_SESSION ?: []; } return Hash::get($_SESSION, $name, $default); } /** * Returns given session variable, or throws Exception if not found. * * @param string $name The name of the session variable (or a path as sent to Hash.extract) * @throws \RuntimeException * @return mixed|null */ public function readOrFail(string $name) { if (!$this->check($name)) { throw new RuntimeException(sprintf('Expected session key "%s" not found.', $name)); } return $this->read($name); } /** * Reads and deletes a variable from session. * * @param string $name The key to read and remove (or a path as sent to Hash.extract). * @return mixed|null The value of the session variable, null if session not available, * session not started, or provided name not found in the session. */ public function consume(string $name) { if (empty($name)) { return null; } $value = $this->read($name); if ($value !== null) { $this->_overwrite($_SESSION, Hash::remove($_SESSION, $name)); } return $value; } /** * Writes value to given session variable name. * * @param string|array $name Name of variable * @param mixed $value Value to write * @return void */ public function write($name, $value = null): void { if (!$this->started()) { $this->start(); } if (!is_array($name)) { $name = [$name => $value]; } $data = $_SESSION ?? []; foreach ($name as $key => $val) { $data = Hash::insert($data, $key, $val); } $this->_overwrite($_SESSION, $data); } /** * Returns the session id. * Calling this method will not auto start the session. You might have to manually * assert a started session. * * Passing an id into it, you can also replace the session id if the session * has not already been started. * Note that depending on the session handler, not all characters are allowed * within the session id. For example, the file session handler only allows * characters in the range a-z A-Z 0-9 , (comma) and - (minus). * * @param string|null $id Id to replace the current session id * @return string Session id */ public function id(?string $id = null): string { if ($id !== null && !headers_sent()) { session_id($id); } return session_id(); } /** * Removes a variable from session. * * @param string $name Session variable to remove * @return void */ public function delete(string $name): void { if ($this->check($name)) { $this->_overwrite($_SESSION, Hash::remove($_SESSION, $name)); } } /** * Used to write new data to _SESSION, since PHP doesn't like us setting the _SESSION var itself. * * @param array $old Set of old variables => values * @param array $new New set of variable => value * @return void */ protected function _overwrite(array &$old, array $new): void { if (!empty($old)) { foreach ($old as $key => $var) { if (!isset($new[$key])) { unset($old[$key]); } } } foreach ($new as $key => $var) { $old[$key] = $var; } } /** * Helper method to destroy invalid sessions. * * @return void */ public function destroy(): void { if ($this->_hasSession() && !$this->started()) { $this->start(); } if (!$this->_isCLI && session_status() === \PHP_SESSION_ACTIVE) { session_destroy(); } $_SESSION = []; $this->_started = false; } /** * Clears the session. * * Optionally it also clears the session id and renews the session. * * @param bool $renew If session should be renewed, as well. Defaults to false. * @return void */ public function clear(bool $renew = false): void { $_SESSION = []; if ($renew) { $this->renew(); } } /** * Returns whether a session exists * * @return bool */ protected function _hasSession(): bool { return !ini_get('session.use_cookies') || isset($_COOKIE[session_name()]) || $this->_isCLI || (ini_get('session.use_trans_sid') && isset($_GET[session_name()])); } /** * Restarts this session. * * @return void */ public function renew(): void { if (!$this->_hasSession() || $this->_isCLI) { return; } $this->start(); $params = session_get_cookie_params(); setcookie( session_name(), '', time() - 42000, $params['path'], $params['domain'], $params['secure'], $params['httponly'] ); if (session_id() !== '') { session_regenerate_id(true); } } /** * Returns true if the session is no longer valid because the last time it was * accessed was after the configured timeout. * * @return bool */ protected function _timedOut(): bool { $time = $this->read('Config.time'); $result = false; $checkTime = $time !== null && $this->_lifetime > 0; if ($checkTime && (time() - (int)$time > $this->_lifetime)) { $result = true; } $this->write('Config.time', time()); return $result; } }