Cookie 类別

Cookie 类別能让你取得、設定及刪除 cookies。

配置

Cookie 类別透過全域应用程序配置档案 app/config/config.php 進行配置。它定義一个稱为 'cookie' 的段落,在其中以下設定被定義:

變数 类型 預設 描述
expiration 整数
0
在 cookie 到期前的秒数。當你呼叫 set() 方法,而 $expiration 沒有被指定時,这个值将被使用。
path 字串
'/'
限制 cookie 可用的路徑。當你呼叫 set() 方法,而 $path 沒有被指定時,这个值将被使用。
domain 字串
null
限制 cookie 可用的網域。當你呼叫 set() 方法,而 $domain 沒有被指定時,这个值将被使用。
secure 布林
false
設为 true 如果你只想要透過安全連線傳輸 cookie。
httponly 布林
false
只允許透過 HTTP 傳輸 cookie,停用 javascript 存取。

如果全域配置中缺少这些值中的一个或多个時,类別将使用定義在这張表中的預設值。

當使用 cookie,請 務必 確保配置在你的 app/config/config.php 及/或你的 php.ini 档案中的時區與設定在你伺服器上的時區相符。因为 cookie 的到期時間戳記是 GMT,當你時區有不相符時, 計算到期時間将導致嚴重错误,從不正確的過期到 cookie 完全不被設定, 因为它們到達瀏覽器時已经逾期。

get($name = null, $default = null)

get 方法能让你讀取一个 $_COOKIE 變数。如果沒有給名稱,会回傳所有 cookie。

靜態
參数
參数 預設 描述
$name 選擇性 在 $_COOKIE 陣列裡的鍵。
$default
null
如果陣列項目沒有找到時應該要回傳什么值?
回傳 混合
範例
$theme = Cookie::get('theme', 'blue');

set($name, $value, $expiration = null, $path = null, $domain = null, $secure = null, $httponly = null)

set 方法能让你建立一个 Cookie。

靜態
參数
參数 預設 描述
$name 必要 在 $_COOKIE 陣列裡的鍵。
$value 必要 Cookie 的值。
$expiration
null
cookie 應該持續的秒数。
$path
null
在伺服器上 cookie 可用的路徑。
$domain
null
Cookie 可用的網域。
$secure
null
設为 true 如果你只想要透過安全連線傳輸 cookie。
$httponly
null
只允許透過 HTTP 傳輸 cookie,停用 javascript 存取。
回傳 布林
範例
Cookie::set('theme', 'blue', 60 * 60 * 24);

對每个沒指定或定義为 null 的參数,将被替換为全域定義配置值。

delete($name, $path = null, $domain = null, $secure = null, $httponly = null)

delete 方法從 $_COOKIE 陣列刪除一个參数。

當一个 cookie 被建立在指定的路徑或網域等,你也必須提供刪除函式。

靜態
參数
參数 預設 描述
$name 必要 移除一个 Cookie 項目。
$path
null
在伺服器上 cookie 可用的路徑。
$domain
null
Cookie 可用的網域。
$secure
null
設为 true 如果你只想要透過安全連線傳輸 cookie。
$httponly
null
只允許透過 HTTP 傳輸 cookie,停用 javascript 存取。
回傳
範例
// 刪除通常的 Cookie
\Cookie::delete('theme');

// 設定路徑的 Cookie
\Cookie::set('theme', 'fuel', null, '/account/');

// 刪除該 Cookie
\Cookie::delete('theme', '/account/');