https://github.com/xp-forge/sessions
HTTP Sessions
https://github.com/xp-forge/sessions
php7 php8 session-cookie sessions web xp-framework
Last synced: 5 months ago
JSON representation
HTTP Sessions
- Host: GitHub
- URL: https://github.com/xp-forge/sessions
- Owner: xp-forge
- Created: 2018-05-08T21:15:33.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2025-05-10T08:42:41.000Z (about 1 year ago)
- Last Synced: 2025-06-24T01:40:56.757Z (12 months ago)
- Topics: php7, php8, session-cookie, sessions, web, xp-framework
- Language: PHP
- Homepage:
- Size: 105 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
Awesome Lists containing this project
README
Sessions for the XP Framework
========================================================================
[](https://github.com/xp-forge/sessions/actions)
[](https://github.com/xp-framework/core)
[](https://github.com/xp-framework/core/blob/master/LICENCE.md)
[](http://php.net/)
[](http://php.net/)
[](https://packagist.org/packages/xp-forge/sessions)
Example
-------
```php
use web\session\{InFileSystem, ForTesting};
// Instantiate session factory
$sessions= new InFileSystem('/tmp');
$sessions= (new ForTesting())->lasting(3600)->named('psessionid');
// Create a new session
$session= $sessions->create();
// Open an existing session...
if ($session= $sessions->open($sessionId)) { … }
// ...or locate session attached to a request
if ($session= $sessions->locate($request)) { … }
// Basic I/O operations
$session->register('key', 'value');
$value= $session->value('key');
$keys= $session->keys();
$session->remove('key');
// Destroy
$session->destroy();
// Close session...
$session->close();
// ...or close and then transmit session to response.
$session->transmit($response);
```
Ensure you always either call `close()` or `transmit()` to have the session data synchronized.
Implementations
---------------
This library includes the following implementations:
* `web.session.InFileSystem` - using the local filesystem with serialized data
* `web.session.ForTesting` - in-memory sessions, for testing purposes
Other implementations provide solutions for clustering:
* https://github.com/xp-forge/redis-sessions
* https://github.com/xp-forge/mongo-sessions
* https://github.com/xp-forge/cookie-sessions
Secure
------
The [Secure flag](https://www.owasp.org/index.php/SecureFlag) is set for all session cookies. If you develop on localhost using *http* only, you will need to tell the sessions instance as follows:
```php
// This will omit the "Secure" flag from session cookies in dev environment
$sessions= new InFileSystem('/tmp');
if ('dev' === $this->environment->profile()) {
$sessions->cookies()->insecure(true);
}
```