mmdm / sim-cookie
一个简单而优秀的cookie管理库
Requires
- php: >=7.2
- ext-json: *
- mmdm/sim-crypt: ^1.0
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许可证下。