$_COOKIE

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

$_COOKIEHTTP Cookies

描述

一个通过 HTTP Cookies 传递到当前脚本的关联 数组

示例

示例 #1 $_COOKIE 示例

<?php
echo 'Hello ' . htmlspecialchars($_COOKIE["name"]) . '!';
?>

假设 "name" cookie 之前已设置

上面的示例将输出类似以下内容

Hello Hannes!

注意

注意:

这是一个 "超级全局" 或自动全局变量。这仅仅意味着它在整个脚本的所有范围内都可用。无需使用 global $variable; 在函数或方法中访问它。

添加注释

用户贡献的注释 5 个注释

kiril (at) atern (dot) us
8 年前
为了澄清之前发布的注释

cookie 名称中的点 (.) 和空格 ( ) 将被替换为下划线 (_)。
k dot andris at gmail dot com
9 年前
注意,cookie 名称中的点 (.) 会被替换为下划线 (_)
rc at opelgt dot org
1 年前
一般来说,$_COOKIE 中的值与 $_SERVER["HTTP_COOKIE"] 中的值并不相同!

在 phpinfo() 中,$_SERVER["HTTP_COOKIE"] 以 7 位显示浏览器存储在 cookie 中的实际值。
在 $_COOKIE 中,此值经过 7 位到 8 位的转换。

当 $_SERVER["HTTP_COOKIE"] 中的所有字符都在 ASCII = 7 位中时,$_COOKIE 会在 phpinfo() 中显示。当单个字符不在 ASCII 中时,phpinfo() 不会显示任何值!

虽然 $_COOKIE 仍然是 $_SERVER["HTTP_COOKIE"] 的 8 位转换!
原因:仅 8 位转换不足以说明字符的含义。
为此,需要使用的字符集。

phpinfo() 不知道字符集,因此最好什么也不说。

在 PHP 生成的网页中使用 $_COOKIE 时,环境具有使用字符集的信息,因此可以显示所需的字符。

三个说明性示例
===========================
使用 HTML 表单获取要存储在名为 "test" 的 cookie 中的内容。

"test" 字段中的输入字符串:door
$_SERVER["HTTP_COOKIE"]: test=door
$_COOKIE["test"]
在 phpinfo() 中显示:door
在任何 html 页面中显示:door

"test" 字段中的输入字符串(表单中使用 ISO-8859-1):Tür
$_SERVER["HTTP_COOKIE"]: test=T%FCr
$_COOKIE["test"]
在 phpinfo() 中显示:""
在 ISO-8859-1-html-页面中显示:Tür
(在 UTF-8-html-页面中显示:T�r)

"test" 字段中的输入字符串(表单中使用 UTF-8):Tür
$_SERVER["HTTP_COOKIE"]: test=T%C3%BCr
$_COOKIE["test"]
在 phpinfo() 中显示:""
在 UTF-8-html-页面中显示:Tür
(在 ISO-8859-1-html-页面中显示:Tür)
user at NOSPAM dot example dot com
1 年前
PHP 将点 (.) 替换为下划线 (_)。要查找所有原始 cookie 名称(和值),可以使用 $_SERVER['HTTP_COOKIE']。

例如,要检索使用 <?php setcookie('testing.dots', 'value'); ?> 设置的 cookie,可以使用
<?php
$cookies
= explode('; ', $_SERVER['HTTP_COOKIE']);
$allCookies = [];

foreach(
$cookies as $cookie) {
$keyAndValue = explode('=', $cookie);
$allCookies[$keyAndValue[0]] = $keyAndValue[1];
}

var_dump($allCookies);
/*
array(1) {
["testing.dots"]=>
string(5) "value"
}
*/

echo $allCookies['testing.dots'];
?>
axodjakov at gmail dot com
3 年前
$_COOKIE 如果在给定键下保存了多个 cookie,则返回一个数组。
To Top