2010-06-10 2 views
2

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

Спасибо!

+1

Кто downvoting все без размещения комментариев? – animuson

+0

* shrugs *, я хотел бы знать =/ – Sam

+0

Извините, это была ошибка. –

ответ

7

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

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

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

+0

Thankyou thankyou thankyou = D! – Sam

7

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

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

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

+3

+1 для перекомпоновки. Настройка файлов cookie в середине * вывода * (конечно, не в середине документа) - это глупость. –

+1

Я загляну в рамки :). – Sam

2

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

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

Смежные вопросы