Download the PHP package spaze/mysql-session-handler without Composer
On this page you can find all versions of the php package spaze/mysql-session-handler. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download spaze/mysql-session-handler
More information about spaze/mysql-session-handler
Files in spaze/mysql-session-handler
Package mysql-session-handler
Short Description MySQL session handler for Nette Framework with optionally encrypted storage
License MIT
Informations about the package mysql-session-handler
MySQL Session handler
Custom PHP session handler for Nette Framework that uses MySQL database for storage.
Requirements
- nette/database 3.2+
- nette/di 3.2+
- PHP 8.2+
Installation
The preferred way to install spaze/mysql-session-handler is by using Composer:
Setup
After installation:
1) Create a table named sessions using SQL in sql/create.sql. The name of the table can be changed in the configuration using the tableName key, like this:
2) Register the extension in your configuration file (e.g. config.neon):
Features
- For security reasons, the session id is stored in the database as an SHA-256 hash.
- Supports encrypted session storage via spaze/encryption which uses paragonie/halite which uses Sodium.
- Events that allow you, for example, to add additional columns to the session storage table.
- Multi-master replication-friendly (tested in master-master row-based replication setup).
Encrypted session storage
Follow the guide at spaze/encryption to create and configure a new encryption key.
Define a new service:
Add the new encryption service to the session handler:
Migration from unencrypted to encrypted session storage is not (yet?) supported.
Events
onBeforeDataWrite
The event occurs before session data is written to the session table, both for a new session (when a new row is inserted) and for an existing session (when a row is updated), even if there is no change in the session data.
Additional columns
You can add a new column to the session table by calling setAdditionalData() in the event handler:
Use it to store, for example, the user id the session belongs to. See for example this code which uses the Nette\Security\User::onLoggedIn handler to do that.
Credits
This is heavily based on MySQL Session handler by Pematon (Marián Černý & Peter Knut), thanks!