Как установить куки через PHP в середине документа? - PullRequest
2 голосов
/ 10 июня 2010

как я могу установить куки в середине документа, не вызывая ошибку «заголовки уже отправлены»? Я пытаюсь сделать сценарий выхода из системы (настройка cookie для входа в систему работает ... странно. Это потому, что он заключен в оператор if?), Однако я уже повторил заголовок страницы и некоторые другие вещи. вверху страницы, до того, как я произвел этот выход.

Спасибо!

Ответы [ 3 ]

8 голосов
/ 10 июня 2010

Самый простой способ - использовать буферизацию вывода , чтобы остановить отправку данных PHP клиенту, пока вы не будете готовы

<?php
ob_start();
// your code
ob_end_flush();
?>

Буферизация вывода сохраняет все выведенные данные до тех пор, пока буфер не будет очищен, а затем отправит их все сразу, поэтому любые эхо-сигналы после start будут оставаться в буфере до end_flush и затем отправляться

7 голосов
/ 10 июня 2010

Попробуйте разбить ваше приложение на две части:

Сначала вы удаляете куки, затем перенаправляете пользователя на страницу результатов. Это обычный способ работы.

Также попробуйте использовать фреймворк в своей разработке, это улучшит ваши навыки и удобство поддержки вашего кода.

2 голосов
/ 10 июня 2010

Файлы cookie отправляются в заголовках, которые отправляются перед отправкой чего-либо еще.Поэтому, если вы на самом деле «повторили» что-то клиенту (браузеру), ваши заголовки также были отправлены.

Тем не менее, вы можете буферизовать свои выходные данные и отправить их все, как только весь код был выполнен (ob_start() и ob_end_flush())

...