miladrahimi/phpsession

此包已被放弃且不再维护。未建议替代包。

免费的PHP会话工具,适用于整洁且强大的项目!

1.6 2015-07-26 13:54 UTC

This package is auto-updated.

Last update: 2020-01-29 02:32:37 UTC


README

免费的PHP会话工具,适用于整洁且强大的项目!

文档

PHPSession是一个小巧的包,用于以面向对象和更安全的方式使用会话。有一个名为Session的类,您可以通过它来访问和操作会话。

安装

使用Composer

强烈建议使用Composer将PHPSession添加到您的应用程序中。如果您不熟悉Composer,可以阅读如何在PHP项目中使用Composer这篇文章。安装Composer后,进入您的项目目录并运行以下命令

composer require miladrahimi/phpsession

或者,如果您已经在应用程序中有了composer.json文件,您可以将此包添加到应用程序的要求中并更新您的依赖项

"require": {
    "miladrahimi/phpsession": "~1.6"
}
composer update

手动

只要您的自动加载器遵循PSR-0PSR-4标准,您就可以使用自己的自动加载器。在这种情况下,您可以将src目录的内容放入您的供应商目录中。

入门

操作非常简单!

use MiladRahimi\PHPSession\Session;

$session = new Session();
$session->set("Singer", "Pink Floyd");
echo $session->get("Singer");
  • 由于与依赖注入兼容,新版本不再基于单例模式。
  • get()方法在值不存在时将返回null

过期

默认情况下,会话数据是永久的。出于安全原因,您应该为您的会话定义生命周期。PHPSession会在其生命周期结束时过期数据。

use MiladRahimi\PHPSession\Session;

$session = new Session();
$session->setLifeTime(10); // 10 minutes lifetime!
$session->set("Singer", "Bon Jovi");
  • 生命周期单位是分钟。
  • 0分钟的生命周期意味着无限时间(这是默认值)。
  • 每次更改生命周期时,其生命周期开始消耗。

UntrustedSession异常

出于安全原因,PHPSession会保存用户IP和Agent(网络浏览器工具)。它会在任何get()调用中检查这些信息,以确保当前用户是真正的会话所有者。如果用户可疑,将抛出UntrustedSession异常。

use MiladRahimi\PHPSession\Session;
use MiladRahimi\PHPSession\UntrustedSession;

$session = new Session();
$session->set("Singer", "Selena Gomez");
try {
    echo $session->get("Singer");
} catch (UntrustedSession $e) {
    echo "You must sign in again!";
    // Log the information...
}

刷新

PHPSession无法识别需要刷新用户信息(如IP和代理)的确切位置。为了防止会话固定攻击,您应该在每次成功的登录请求中刷新会话。

$session->refresh();

会话劫持和固定

PHPSessions 目前是一个小巧的包。我保证在下一个版本中它会变得更好!这个版本中包含了一些安全考虑。如果你在每次成功登录后调用 refresh() 方法,它可以防止会话固定。它可以防止通过保持用户信息(IP和代理)进行简单劫持。实际上,我认为防止其他威胁是用户的责任。但如果你将 PHPSession 视为 PHP 本地 API,你可以使用它来实现你的安全方法。如果你有使 PHPSession 更加安全的想法,如果你能与我们分享,我将不胜感激!

贡献者

主页

许可证

PHPSession 在 MIT 许可证 下发布。