wp-forge/wp-cookie-manager

一个用于简化Cookie管理的WordPress库。

2.0.1 2023-01-16 17:19 UTC

This package is auto-updated.

Last update: 2024-09-16 21:00:47 UTC


README

一个用于简化Cookie管理的WordPress库。

功能

抽象出所有的PHP Cookie管理和WordPress Cookie常量,让您只需获取和设置Cookie。

如何使用

  1. 通过 Composer 将其添加到您的项目中
$ composer require wp-forge/wp-cookie-manager
  1. 确保您已经将Composer自动加载器添加到您的项目中
<?php

require __DIR__ . '/vendor/autoload.php';
  1. 开始管理Cookie
<?php

use WP_Forge\CookieManager\CookieManager;

// Set a cookie
CookieManager::get()->cookie('myCookieName')->set('myCookieValue', time() + 86400);  // Expires one day from now

// Check if cookie exists
CookieManager::get()->cookie('myCookieName')->exists();

// Get cookie value, or default value if it doesn't exist
CookieManager::get()->cookie('myCookieName')->value('myDefaultValue');

// Delete cookie
CookieManager::get()->cookie('myCookieName')->delete();

使用底层Cookie类

CookieManager 提供了一种全局方式来配置和管理Cookie的使用。然而,如果您需要与配置非常不同的Cookie进行交互,您可以直接使用 Cookie 类。

请注意,直接使用 Cookie 类将不会使用 CookieManager 提供的智能默认值。

<?php

use WP_Forge\CookieManager\Cookie;

// Create a cookie instance
$cookie = Cookie::make('myCookieName')
  ->setDomain(COOKIE_DOMAIN)
  ->setPath(COOKIEPATH)
  ->setSecure(is_ssl())
  ->setHttpOnly(true);
  
// Set a cookie
$cookie->set('myCookieValue', time() + 86400) // Expires one day from now

// Check if cookie exists
$cookie->exists();

// Get cookie value
$cookie->value();

// Get cookie value, or default value if the cookie doesn't exist
$cookie->value('myDefaultValue');

// Delete cookie
$cookie->delete();

高级使用

默认情况下,CookieManager 将使用智能的、WordPress特定的默认值。这些默认值可以被覆盖,以下概述了如何操作的步骤。

可自定义属性

名称前缀

默认情况下,所有Cookie名称都以前缀 wp- 开头。这可以通过设置 $namePrefix 属性来更改。

<?php

use WP_Forge\CookieManager\CookieManager;

$cookieManager = CookieManager::get();
$cookieManager->namePrefix = 'my-prefix-'; // Set to an empty string to disable the prefix

$cookieManager->cookie('myCookieName')->exists();

名称后缀

默认情况下,所有Cookie名称都以后缀 - 开头,后面跟着WordPress的 COOKIEHASH 常量。这可以通过设置 $nameSuffix 属性来更改。

<?php

use WP_Forge\CookieManager\CookieManager;

$cookieManager = CookieManager::get();
$cookieManager->nameSuffix = '-my-suffix'; // Set to an empty string to disable the suffix

$cookieManager->cookie('myCookieName')->exists();

路径

默认情况下,Cookie路径设置为WordPress的 COOKIEPATH 常量。这可以通过设置 $path 属性来更改。

<?php

use WP_Forge\CookieManager\CookieManager;

$cookieManager = CookieManager::get();
$cookieManager->path = '/my/path';

$cookieManager->cookie('myCookieName')->exists();

域名

默认情况下,Cookie域名设置为WordPress的 COOKIE_DOMAIN 常量。如果 COOKIE_DOMAIN 为空,则回退到 $_SERVER['HTTP_HOST'] 的值(即当前域名)。这可以通过设置 $domain 属性来覆盖。

<?php

use WP_Forge\CookieManager\CookieManager;

$cookieManager = CookieManager::get();
$cookieManager->domain = '.example.com';

$cookieManager->cookie('myCookieName')->exists();

安全

默认情况下,$secure 属性设置为WordPress函数 is_ssl() 返回的值。将值设置为 true 将确保Cookie仅通过HTTPS连接发送。将值设置为 false 将确保Cookie始终发送,无论连接是否加密。

<?php

use WP_Forge\CookieManager\CookieManager;

$cookieManager = CookieManager::get();
$cookieManager->secure = false;

$cookieManager->cookie('myCookieName')->exists();

HTTP Only

默认情况下,$httpOnly 属性设置为 false,这意味着Cookie将在所有上下文中可用。将值设置为 true 将确保Cookie仅可在PHP中访问,而不是JavaScript。这有助于防止通过XSS攻击进行身份盗窃。

<?php

use WP_Forge\CookieManager\CookieManager;

$cookieManager = CookieManager::get();
$cookieManager->httpOnly = true;

$cookieManager->cookie('myCookieName')->exists();