Cookie без имени в PHP?

Я пытался установить имя файла cookie из переменной, и я случайно удалил объявление переменной, что привело к интересному открытию. Рассмотрим код ниже:

setcookie('', 'value', time()+10);

Я предположил, что этот код не должен работать, так как нам нужно объявить имя для cookie, и, соответственно, вывести ошибку, но вместо этого он устанавливает cookie с именем, которое содержится в значение, и значение cookie равно пустой строке '' вместо:

var_dump($_COOKIE);  // array (size=1) 'value' => string '' (length=0)
setcookie('', 'value', time()+10);
echo (int)isset($_COOKIE['value']);  // 1

Может кто-нибудь объяснить, пожалуйста, почему это происходит? Я просто пытаюсь думать, что потенциально может быть ситуация, когда это может произойти и вызвать много путаницы, хотя вы должны проверять все на наличие ошибок в вашем коде.

1

Решение

Куки хранятся как параметры GET.

Например :

setCookie('a', 'A');
setCookie('b', 'B');

Будет храниться как:

a=A&b=B

Я предполагаю, что, если ключ пуст, url_encode будет отображать это:

setCookie('', 'A');
setCookie('b', 'B');

A&b=B

Который можно прочитать как:

A = "";
b = "B";
1

Другие решения

Просто предположение:
Глядя на источник setcookie формат, используемый для построения Set-Cookie строка заголовка Set-Cookie: %s=%s, Итак, я не программист на C, но может быть C о snprintf не заменяет первый параметр name (которая будет пустой строкой) и начинает замену строки формата вторым дополнительным параметром value как первый.

0

По вопросам рекламы [email protected]