2013-08-31 6 views
-3

Когда вы пытаетесь перенаправить пользователя с заголовком: местоположение на другой странице, когда на странице уже есть «вывод», PHP отобразит сообщение: уже отправленные заголовки.Prevent 'headers уже отправлены'

Это хорошее решение для создания функции и вызов этой функции, где вам это нужно (даже в нижней части страницы)?

Спасибо!

Пример:

function redirectMe($location){ 
    header('Location:'.$location); 
} 

//HTML 

//Redirect user: 
redirectMe('http://www.google.com'); 
+1

добавить 'ob_start();' вверху страницы .. –

ответ

2

Нет, это не будет работать, потому что у вас есть уже выход HTML на тот момент, что при вызове функции.

Если вы хотите использовать перенаправление, оно должно быть до выхода пользователя ANYTHING. Проверяйте переменные перед тем, как вы выведете что-нибудь, либо сделайте так, либо вот так, либо решите не перенаправлять пользователя, а затем вывести весь ваш HTML.

Редактировать: Совершенно ужасно, но если вы не можете решить, как проверить условия на перенаправление/пребывание, вы можете поместить весь свой HTML в строку, а затем в конце страницы откликнуться но лорд, делать это было бы намного больше, чем проверять правильные условия и идти оттуда.

2

Если что-то выходит, выводимый в браузер перед выполнением функции заголовка для перенаправления, это даст заголовки уже отправлена ​​ошибка. Если для пользователя не требуется вывод, вы можете использовать функцию ob_start() в начале вашей страницы для буферизации вывода, отправляемого в браузер, и использования ob_flush после заголовка. Вы можете использовать его в соответствии с потоком вашей страницы

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