mmdm/sim-cookie

一个简单而优秀的cookie管理库

v3.0.0 2021-09-12 19:44 UTC

This package is auto-updated.

Last update: 2024-09-13 01:59:18 UTC


README

cookie管理库。

功能

  • 管理您的cookie
  • 使用Crypt库加密cookie(可选)
  • 管理SameSite
  • 检查用户代理对SameSite的支持

安装

composer

composer require mmdm/sim-cookie

或者您也可以直接从github下载zip文件,解压后将其放到您的项目库中,就像使用其他库一样。

只需添加以下行来自动加载文件

require_once 'path_to_library/autoloader.php';

然后您就可以使用了。

如何使用

// to instantiate a cookie object
$cookie = new Cookie();

// then use cookie methods like
$cookie->get($cookie_name);

与Crypt库一起使用

如果您需要提高cookie的安全性,请使用Crypt库。

// send crypt instance through cookie
// constructure (dependency injection)
$cookie = new Cookie($crypt);
// now your cookies are safe

如果您不需要某些cookie具有安全性,请将ISetCookie方法的setValue的最后一个参数传递为false。

可用方法

Cookie

parse(string $cookie_string, bool $decode = false, bool $encrypt = true): ?ISetCookie

将cookie字符串发送以将其解析为SetCookie对象或null(如果无法解析)。

注意

要解码解析字符串的值,请将true传递给$decode参数。

要加密解析的值,请将true作为$encrypt参数。

set(string $name): ISetCookie

创建新的cookie对象,并可以在set方法之后修改所有输入。

有关更多信息,请参阅SetCookie可用方法

get(?string $name = null, $prefer = null)

获取cookie的值或$prefer(如果未定义)。

注意

要获取所有cookie,请不要发送任何参数。

getAsString(?string $name = null, bool $decode = true, bool $decrypt = false): string

获取cookie的字符串。

注意

要获取所有cookie的字符串,请发送null作为$name

remove(string $name): ICookie

移除cookie(从$_COOKIE变量中移除)。

has(string $name): bool

检查是否存在具有特定名称的cookie。

getCookieValueFromString(string $str)

获取(解密)值。

注意

当cookie值在头信息中时很有用,想要获取实际值并检查它。

$value = $cookie->getCookieValueFromString($the_cookie_value_that_is_encrypted_or_raw);

SetCookie可用方法

getName(): ?string

获取cookie名称。

setValue(?string $value, bool $encrypt = true): ISetCookie

设置cookie的值。

注意

要加密值,请将true作为第二个参数。

getValue(): string

获取cookie的值。

setExpiration($expire): ISetCookie

设置cookie的过期时间。

getExpiration(): int

获取cookie的过期时间。

setPath(?string $path): ISetCookie

设置cookie路径。

getPath(): ?string

获取cookie路径。

setDomain(?string $domain): ISetCookie

设置cookie域名。

getDomain(): ?string

获取cookie域名。

setSecure(?bool $answer): ISetCookie

设置cookie的安全字符串。

isSecure(): ?bool

检查是否设置了安全字符串。

setHttpOnly(?bool $answer): ISetCookie

设置cookie的httpOnly字符串。

isHttpOnly(): ?bool

检查是否设置了httpOnly。

setSameSite(?string $same_site): ISetCookie

为现代浏览器设置same site。

注意

可接受值包括

  • ICookie::SAME_SITE_NONE - 是 "None" 字符串

  • ICookie::SAME_SITE_LAX - 是 "Lax" 字符串

  • ICookie::SAME_SITE_STRICT - 是 "Strict" 字符串

getSameSite(): ?string

获取之前设置的same site或null。

setExtra(string $extra): ISetCookie

为cookie设置额外字符串(如有需要且受支持)。

getExtra(): string

获取额外cookie字符串

setUseragent(?string $useragent = null): ISetCookie

设置useragent用于检查是否支持samesite。

注意

默认情况下,它将从$_SERVER获取浏览器信息。

getUseragent(): ?string

获取useragent。

注意

此方法将返回您设置的useragent,而不是来自$_SERVER变量的useragent。

toString(bool $decode = true, bool $decrypt = false): string

获取此cookie的cookie头字符串

输出示例

"Set-Cookie: tmp-cookie=A simple cookie; expires=Sat, 03-Apr-2021 10:45:55 GMT; Max-Age=60"
"Set-Cookie: tmp-cookie=A simple cookie number 2; expires=Sat, 03-Apr-2021 10:45:55 GMT; Max-Age=60; secure; SameSite=None"

save(bool $encode = true): bool

保存配置的cookie。参数$encode将编码value

注意

必须调用此方法以保存cookie,否则您将错过您的cookie。

依赖关系

只有一个依赖项,即Crypt库。使用此功能,如果发生任何cookie劫持,他们无法看到实际数据,因为数据已加密。

许可证

在MIT许可证下。