Я пытаюсь использовать скобки внутри имени файла cookie.
Предполагается, что он выглядит так (браузер хочет этого!):
Name: name[123456].newName Content: 20
Вот мой пример:
$cookie = "name[123456].newName=20"
Но когда я анализирую, что видит браузер, я получаю следующее:
cookie['name'] = Array
И я хочу:
cookie['name[123456].newName'] = 20
Мой вопрос: как мне написать имя cookie так, как это понимает браузер?
Заранее спасибо.
Собственно, все, что вам нужно сделать, это:
<?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 ) )
Я не знаю, как отключить эту функцию, поэтому вам, вероятно, понадобится использовать строковые функции и проанализировать содержимое raw cookie, которое можно найти в $_SERVER['HTTP_COOKIE']
:
name[123456].newName=20