Ghostff/Session
PHP Session Manager(非阻塞、flash、分段、会话加密)。使用 PHP open_ssl 进行可选的会话数据加密/解密。支持 File、MySQL、Redis 和 Memcached。
点击这里查看代码。
安装
composer require ghostff/session
基本配置
使用默认设置无需传递任何参数。更多设置参见 Github Readme。
use Ghostff\Session\Session;
require 'vendor/autoload.php';
$app = Flight::app();
$app->register('session', Session::class);
// 需要记住的是,你必须在每次页面加载时提交会话
// 或者在配置中启用 auto_commit。
简单示例
Flight::route('POST /login', function() {
$session = Flight::session();
// 登录逻辑...
$session->set('is_logged_in', true);
$session->set('user', $user);
$session->commit(); // 必须显式提交
});
// 中间件方式保护路由
Flight::route('/some-restricted-page', function() {
// 页面逻辑
})->addMiddleware(function() {
$session = Flight::session();
if(!$session->get('is_logged_in')) {
Flight::redirect('/login');
}
});
高级配置(数据库存储)
$app->register('session', Session::class, [ [
Session::CONFIG_DRIVER => Ghostff\Session\Drivers\MySql::class,
Session::CONFIG_ENCRYPT_DATA => true,
Session::CONFIG_SALT_KEY => hash('sha256', 'my-super-S3CR3T-salt'),
Session::CONFIG_AUTO_COMMIT => true,
Session::CONFIG_MYSQL_DS => [
'driver' => 'mysql', 'host' => '127.0.0.1',
'db_name' => 'my_app_database', 'db_table' => 'sessions',
'db_user' => 'root', 'db_pass' => '',
'persistent_conn'=> false,
]
] ]);
会话数据不持久化?
设置会话数据后必须调用 $session->commit()。或配置 auto_commit => true,或使用 Flight::after('start', function() { Flight::session()->commit(); });。
完整文档见 Github Readme。