PHP: Cannot modify header – вирішення

05
Мар

PHP: Cannot modify header – вирішення

Коли писав php форму для одного статичного сайту – зіткнувся з такою проблемою: необхідний був редирект після підтвердження форми назад на саму сторінку, при цьому стандартні функції зміни header і переходу видавали ось таку помилку:

Warning: cannot modify header information headers already sent by output started at …

Викликати джаваскріпт і переходити через window.location = «http://» не хотілося з багатьох причин, тому довелося шукати рішення через php.

Я обійшов чимало форумів та настанов, скрізь були досить складні і хитромудрі поради, які при цьому не давали потрібного результату. Але в підсумку, на одному з невеликих англомовних форумів, було знайдено просте і зручне рішення: за допомогою функції ob_start().

Функція ob_start – включає буферизацію виводу. Якщо буферизація висновку активна, висновок скрипта не надсилається (крім заголовків (headers)) і зберігається у внутрішньому буфері.

Щоб вирішити проблему із зауваженням досить додати в початок сторінки:

<? ob_start(); ?>

І в кінець сторінки:

<? ob_flush(); ?>

У підсумку всі переходи, а також обробки сесій працюють відмінно і без проблем