В руководстве php в разделе «cookie» указано, что вы можете добавить несколько значений в один файл cookie, просто добавив «[]» в имя файла cookie.
Сначала я понял следующее:
<?php setcookie("[user1]", "bill"); setcookie("[user2]", "tom"); print_r($_COOKIE); ?>
и out put был: «Array ()« Очевидно, увидев пустой массив, я знал, что что-то не так, но я следовал тому, что было изложено в руководстве. Поэтому я пошел в режиме разработчика в браузере, чтобы увидеть всю информацию заголовка браузера и сервера.
Браузер и сервер имели следующее: [user1] = bill [user2] = tom
но ассоциативный массив $ _COOKIE был пуст, т. е. 'Array ()'
Поэтому я изучил и нашел в руководстве PHP то, как несколько значений хранятся в одном файле cookie в разделе «Переменные из внешних источников».
Здесь он дает подробный пример того, как это делается правильно. Вместо вышесказанного это делается следующим образом:
<?php setcookie("Cookie[user1]", "bill"); setcookie("Cookie[user2]", "tom"); print_r($_COOKIE); ?>
Вывод для вышеупомянутого скрипта: «Array ([Cookie] => Array ([user1] => bill [user2] => tom)) '
Мой вопрос: почему в первом примере файлы cookie регистрируются и все же не распечатываются, но во втором (правильном) примере они распечатываются в переменной $ _COOKIE?
Вы делаете это немного неправильно
setcookie("Cookie[user1]", "bill"); setcookie("Cookie[user2]", "tom");
Это сохранит счетчик значений; и «tom» в виде массива, внутри файла cookie под названием «Cookie», к которому обращается через глобальный суперобъект $ _COOKIE. вам необходимо получить доступ к нему следующим образом:
print_r($_COOKIE['Cookie']); // Cookie is the name you used above
Другой пример:
setcookie("bob[user1]", "bill"); // cookie name is bob print_r($_COOKIE['bob']); // Notice the cookie name is the key here
Если вы хотите сохранить массив внутри одного файла cookie, вы также можете сериализовать содержимое. Это преобразует массив в строку, которая будет храниться внутри файла cookie, после чего вы сможете преобразовать его обратно, когда вам понадобятся данные.
$myArray = array(1,2,3,4); setCookie('my_cookie', serialize($myArray)); // Store the array as a string $myArray = unserialize($_COOKIE['my_cookie]); // get our array back from the cookie