@Aricus

Почему не устанавливаются cookie?

Если это имеет значение, сайт на wordpress, в качестве сервера - XAMPP.
Сверху functions.php пишу
setcookie("test3", 1, time() + 7 * 86400);
var_dump($_COOKIE["test3"]);

и несколько раз обновляю страницу. Каждый раз пишет null. Иными словами, cookie не сохраняются. Пробовал писать дополнительные параметры, результат тот же. В чём может быть причина?
  • Вопрос задан
  • 931 просмотр
Пригласить эксперта
Ответы на вопрос 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Видимо ДО вызова setcookie() у вас уже делается какой-нибудь вывод страницы.
Из-за этого не успевают передаться данные (cookies), которые должны быть выведены в header HTTP-ответа.
PHP конечно ругается об опоздавшем применении setcookie(), но у вас подавлен вывод ошибок на страницу, их не видно. Загляните в error.log WEB-сервера, там этих ошибок 'Cannot modify header information' будет...

Хотя нет, WP все ошибки складывает в своём лог-файле, смотрите там. А может это WP перестраивает всю логику работы, и нужно пользоваться исключительно его функциями управления cookie-сами...

Резюмируя: перенесите setcookie() в index.php первой строкой, что бы уж точно срабатывало раньше любого вывода.
Ответ написан
Комментировать
@tempick
Тут прикол, вот в чём - куки устанавливаются в момент ответа сервера, а значение из $_COOKIE извлекается до ответа. То есть, несмотря на то, что в коде вы сначала устанавливаете куки, а потом выводите - в реальности это происходит в другом порядке. Если обновите страницу ещё раз - то должны увидеть значение. Если же оно так и осталось null - значит, AUser0 прав, и у вас действительно происходит какой-то вывод данных до того, как вы пытаетесь установить куки. Тут как раз-таки та же самая проблема - куки передаются вместе с ответом сервера браузеру. Если что-то вывести в ответ до вызова setcookie() - то куки просто не передадутся браузеру
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы