Simple session middleware for the Slim Framework. Also included is a useful helper class that allows PHP built-in session management.
Licensed under MIT. Totally free for private or commercial projects.
composer require andrewdyer/slim3-session-middleware
<?php
$app = new \Slim\App();
$app->add(new \Anddye\Middleware\SessionMiddleware([
'autorefresh' => true,
'name' => 'myapp_session',
'lifetime' => '1 hour',
]));
$app->get('/', function (Request $request, Response $response) use ($container) {
if (!isset($container['session']['loggedIn'])) {
//...
}
///..
});
$app->run();
Option | Type | Default | Description |
---|---|---|---|
autorefresh |
boolean | false |
If you want session to be refresh when user activity is made (interaction with server). |
domain |
tring | null |
Cookie domain, for example 'www.php.net'. To make cookies visible on all subdomains then the domain must be prefixed with a dot like '.php.net'. |
handler |
mixed | null |
Custom session handler class or object. Must implement SessionHandlerInterface as required by PHP. |
httponly |
boolean | false |
If set to true then PHP will attempt to send the httponly flag when setting the session cookie. |
ini_settings |
array | null |
Associative array of custom session configuration. |
lifetime |
int or string | "20 minutes" |
The lifetime of the session cookie. Can be set to any value which strtotime can parse. |
name |
string | "session" |
Name for the session cookie. Defaults to session instead of PHP's PHPSESSID . |
path |
string | "/" |
The path on the domain where the cookie will work. Use a single slash ('/') for all paths on the domain. |
secure |
boolean | false |
Cookies will only be sent over secure connections if true. |
The \Anddye\Session\Helper
class can be attached to your app container:
$container = $app->getContainer();
$container['session'] = function ($container) {
return new \Anddye\Session\Helper();
};
The helper class can be used to check if a session variable exists in addition to setting, getting and deleting session variables.
$app->get('/', function (Request $request, Response $response) use ($container) {
// Check if variable exists
$exists = $container['session']->exists('my_key');
$exists = isset($container['session']->my_key);
$exists = isset($container['session']['my_key']);
// Get variable value
$value = $container['session']->get('my_key', 'default');
$value = $container['session']->my_key;
$value = $container['session']['my_key'];
// Set variable value
$container['session']->set('my_key', 'my_value');
$container['session']->my_key = 'my_value';
$container['session']['my_key'] = 'my_value';
// Delete variable
$container['session']->delete('my_key');
unset($container['session']->my_key);
unset($container['session']['my_key']);
});
If you are having general issues with this library, then please feel free to contact me on Twitter.
If you believe you have found an issue, please report it using the issue tracker, or better yet, fork the repository and submit a pull request.
If you're using this package, I'd love to hear your thoughts!