andrewlim / rememberme
易于使用的 RememberMeCookie 类,仅依赖 PDO
1.0.0
2022-05-04 20:36 UTC
Requires
- php: >=5.4.0
README
易于使用的 RememberMeCookie 类,仅依赖 PDO。
特性
- 遵循 PSR-12 规范
- 与 PHP 5.4 及以上版本兼容
- cookie 值的哈希(默认 SHA256)存储在数据库中
设置
您可以直接包含 RememberMeCookie.php 文件,或者通过 composer 安装
composer require andrewlim/rememberme
默认情况下,类会在名为 "rememberme" 的表中查找和存储 cookie 数据。它需要以下 4 个列:cookiehash, userid, createdat, expiresat
-- MySQL / SQLite CREATE TABLE rememberme ( cookiehash VARCHAR(128) PRIMARY KEY, userid VARCHAR(128) NOT NULL, createdat DATETIME NOT NULL, expiresat DATETIME NULL );
-- postgresql CREATE TABLE rememberme ( cookiehash VARCHAR(128) PRIMARY KEY, userid VARCHAR(128) NOT NULL, createdat TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, expiresat TIMESTAMP(0) WITHOUT TIME ZONE NULL );
用法
登录成功后,调用 create() 来创建 rememberme cookie
// Create a RememberMeCookie and pass a PDO instance $rememberMeCookie = new \AndrewLim\RememberMe\RememberMeCookie($pdo); // Create a cookie, store its hash and and send it to browser // The userid variable is a foreign key id to identify the user $row = $rememberMeCookie->create($userid); // Redirect to secure page if ($row) { header('Location: dashboard.php'); }
调用 verify() 来检查 rememberme cookie
// If rememberme cookie is valid exists and is valid $row = $rememberMeCookie->verify(); if ($row) { header('Location: dashboard.php'); return; } // Invalid else { header('Location: login.php'); return; }
调用 logout() 来从浏览器中移除 rememberme cookie 并删除数据库中的哈希
$rememberMeCookie->logout(); header('Location: login.php');
配置
在调用 create() 之前,您可以配置 cookie 的创建和存储
$rememberMeCookie = new \AndrewLim\RememberMe\RememberMeCookie($pdo); // Table name $rememberMeCookie->table = 'customtable'; // Cookie name $rememberMeCookie->cookiename = 'dashboard_cookie'; // hashing algorithm $rememberMeCookie->algo = 'sha512'; // 2 years expiry $rememberMeCookie->expires = time() + (2 * 365 * 24 * 60 * 60);