Использование скобок в имени файла cookie - почему PHP превращает его в массив? - PullRequest
1 голос
/ 19 октября 2010

Я пытаюсь использовать скобки в имени файла cookie.

Предполагается, что это выглядит так (именно так этого хочет браузер!):

Name: name[123456].newName
Content: 20

Вот мой пример:

$cookie = "name[123456].newName=20"

Но когда я анализирую то, что видит браузер, я получаю это:

cookie['name'] = Array

И я хочу:

cookie['name[123456].newName'] = 20

У меня такой вопрос: как мне написать имя куки таким образом, чтобы браузер понимал это?

Заранее спасибо.

1 Ответ

5 голосов
/ 19 октября 2010

На самом деле, все, что вам нужно сделать, это:

<?php

setcookie('name[123456].newName', 20);

?>

Это создает следующий заголовок:

Set-Cookie: name[123456].newName=20

... и браузеры (ну, по крайней мере, Firefox) кажутсячтобы справиться с этим просто отлично.

Проблема начинается, когда вы хотите прочитать значение обратно.PHP имеет отличную особенность: всякий раз, когда он находит входной параметр (get, post, cookie ...) с квадратными скобками на своем имени, он строит массив из него.Так что print_r($_COOKIE) отображает это:

Array
(
    [name] => Array
        (
            [123456] => 20
        )

)

Я не знаю ни одного способа отключить эту функцию, поэтому вам, вероятно, нужно использовать строковые функции и анализировать содержимое файла cookie, который можно найти на$_SERVER['HTTP_COOKIE']:

name[123456].newName=20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...