Куки, сессии, отправка HTTP-заголовков должны происходить до отправки любой информации в окно браузера, т.е. до любого вывода echo, print или непосредственного вывода вне тэгов <?php и ?>. Это связано с тем, что HTTP-заголовки передаются перед всеми данными и когда происходит вывод в окно браузера, PHP вынужден их пред этим отослать клиенту. Поэтому после вывода информации в браузер повторная отправка HTTP-заголовков невозможна.\r\nЕсли вывод текста до отправки HTTP-заголовков необходим следует воспользоваться функциями управления вывода, позволяющих задерживать вывод информации в браузер или, если имеете доступ к конфигурационному файлу php.ini включить буферизацию при помощи директивы\r\n[i]output_buffering = On[/i]