header( 'Location: ...'); перенаправление на страницу

  • Автор темы Автор темы Wikly
  • Дата начала Дата начала

Wikly

Новичок
Доброго всем времени суток...
Такая ситуёвина:

есть такой код:

PHP:
<?php
$koren = $_SERVER['DOCUMENT_ROOT'];
 require $koren.'/adminka/include/config.php';
 require $koren.'/include/functions.php';    
 session_start();
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title</title>
<link href="style.css" rel="stylesheet" type="text/css" /></head>
<body>
...
Вызов функции с перенаправлением..
...

В подключаемом файле require $koren.'/include/functions.php'; есть некоторые функции после выполнения которых необходимо перенаправить пользователя на определенную страницу, но при вызове этой функции выпадает ошибка: "Warning: Cannot modify header information - headers already sent by". Ругается на эту строку: <link href="style.css" rel="stylesheet" type="text/css" /></head>. В принципе понимаю что это за ошибка. Но ведь файл с функциями находится до всякого вывода на экран...

Подскажите поэалуйста, как решить такую проблему?..

Заранее спасибо......
 
Благодарю за подсказку...

Но решил проблему перенаправлением не через php header, а через html
PHP:
<meta http-equiv="refresh" content="15; url=http:/........1.php/">
 
не переживай, ты не один такой.
тысячи говнокодеров делают то же самое
 
Непонятно, почему это нельзя было сделать сейчас.
тем более, что это далеко не первая проблема, которая вылезет у тебя из-за кривой архитектуры.
 
просто с шаблонами как то не очень понятно... уменя так получается, что вызов функции происходит после этой кучи php...
 
вот этого и не должно быть. вывод должен начинаться после вызова всех функций.
 
Ну это то я понимаю... а как это сделать на практике - не очень...
 
там же пример приведён.
весь вывод уходит в два шаблона - основной и конкретной страницы.
скрипт сначала отрабатывает, а потом вызывает основной шаблон.
 
после третьего раза прочтения, примерно понятно... спасибо. буду разбираться...
Только вот сайт почти готов на "кривой архитектуре". Придется переписать на шаблонную. :)
 
там же пример приведён.
весь вывод уходит в два шаблона - основной и конкретной страницы.
скрипт сначала отрабатывает, а потом вызывает основной шаблон.

И правда с шаблонами поинтереснее работать... Пол ночи ковырялся, но всё таки разобрался...
Спасибо!
 
Кроме перенаправления, шаблон помогает решить множество других проблем.
Во-первых, проблемы, также связанные с НТТР заголовками - установка кук, сессии и прочее.
Во-вторых, проблемы связанные с логикой приложения. В каких-то случаях может понадобиться другой вывод (например, в другом дизайне), или вообще без дизайна - если скрипт должен вернуть только данные для AJAX. Или, при возникновении ошибки, стандартный вывод не должен начинаться вовсе, а должно показываться дружественное сообщение об ошибке.
В-третьих, что тоже очень важно - использование шаблонов позволяет менять шапку сайта в зависимости от выводимой страницы - то, что при твоем старом подходе невозможно было в принципе, даже несчастный <title> страницы поменять нельзя было. Сейчас же это элементарно.

Вообще, разделение кода на получение и отображение данных - это из разряда азбучных истин, таблицы умножения в РНР. Ну. в нормальном современном РНР, а не в том чудовищном говнокодище из прошлого века, которым забиты все обучающие пособия.
 
Ну так то да. С шаблонами решаются многие задачи.. К тому же и дизайн можно изменить не затрагивая код скрипта.. В общем - хорошая штука!
 
Сверху