$_COOKIE

$HTTP_COOKIE_VARS [deprecated]

(PHP 4 >= 4.1.0, PHP 5)

$_COOKIE -- $HTTP_COOKIE_VARS [deprecated]HTTP Cookies

Description

An associative array of variables passed to the current script via HTTP Cookies.

$HTTP_COOKIE_VARS contains the same initial information, but is not a superglobal. (Note that $HTTP_COOKIE_VARS and $_COOKIE are different variables and that PHP handles them as such)

Changelog

Version Description
4.1.0 Introduced $_COOKIE that deprecated $HTTP_COOKIE_VARS.

Examples

Example #1 $_COOKIE example

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

Assuming the "name" cookie has been set earlier

The above example will output something similar to:

Hello Hannes!

Notes

Note:

This is a 'superglobal', or automatic global, variable. This simply means that it is available in all scopes throughout a script. There is no need to do global $variable; to access it within functions or methods.

Коментарии

beware, dots (.) in cookie names are replaces by underscores (_)
2015-05-29 23:49:39
http://php5.kiev.ua/manual/ru/reserved.variables.cookies.html
To clarify the previously posted note:

Dots (.) and spaces ( ) in cookie names are being replaced with underscores (_).
2016-05-24 03:08:09
http://php5.kiev.ua/manual/ru/reserved.variables.cookies.html
$_COOKIE returns an array if there are more than one cookie saved under the given key.
2021-07-07 14:25:28
http://php5.kiev.ua/manual/ru/reserved.variables.cookies.html
PHP replaces dots (.) with underscores (_). To find all original cookie names (and value) you can use $_SERVER['HTTP_COOKIE'].

For example to retrieve a cookie set with <?php setcookie('testing.dots''value'); ?> you may use:
<?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'];
?>
2022-12-07 14:26:36
http://php5.kiev.ua/manual/ru/reserved.variables.cookies.html
The values of $_COOKIE in general are not identic with the values in $_SERVER["HTTP_COOKIE"]!

In phpinfo() $_SERVER["HTTP_COOKIE"] shows the actual value stored in the cookie by the browser in 7bit.
In $_COOKIE is this value after a 7bit to 8bit conversion.

When all characters in $_SERVER["HTTP_COOKIE"] are in ASCII = 7bit, $_COOKIE is displayed in phpinfo(). When one single character is not in ASCII, phpinfo() shows no value!

Although in $_COOKIE is still the 8bit conversion of $_SERVER["HTTP_COOKIE"]!
The reason: the 8bit conversion alone is not enough to say what characters are meant.
For that the used character-set is necessary.

phpinfo() does not know the character-set and better says nothing.

When using $_COOKIE in a php-generated web page the environment has the info of used character-set and so the meant characters can be displayed.

Three illustrating examples
===========================
A HTML-form is used to get the content which shall be stored in a cookie named "test".

Input string in field "test": door
$_SERVER["HTTP_COOKIE"]: test=door
$_COOKIE["test"]
   displayed in phpinfo(): door
   displayed in any html page: door

Input string in field "test" (ISO-8859-1 used in form): Tür
$_SERVER["HTTP_COOKIE"]: test=T%FCr
$_COOKIE["test"]
   displayed in phpinfo(): ""
   displayed in a ISO-8859-1-html-page: Tür
   (displayed in a UTF-8-html-page: T�r)

Input string in field "test" (UTF-8 used in form): Tür
$_SERVER["HTTP_COOKIE"]: test=T%C3%BCr
$_COOKIE["test"]
   displayed in phpinfo(): ""
   displayed in a UTF-8-html-page: Tür
   (displayed in a ISO-8859-1-html-page: Tür)
2022-12-29 21:04:44
http://php5.kiev.ua/manual/ru/reserved.variables.cookies.html

    Поддержать сайт на родительском проекте КГБ