Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Специфика работы header() в разных условиях

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Viraban009
Отправлено: 16 Июня, 2009 - 16:11:10
Post Id


Гость


Покинул форум
Сообщений всего: 83
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




Из-за своей специфики header() отправляется всегда первым вне зависимости от месторасположения(если только не заменяется повтороно).
Скажите, обрабатывается ли правильно эта функция в условиях if…else или функция работает по типу препроцессора (обрабатывается, посылается, а потом уж выполнение кода).

Объясню в чем смысл. В начале скрипта обрабатываю условие, и если оно ложно запускаю движок(сайт как обычно грузится), если истинно вывожу специальную страничку ошибки с заголовком header().

Будет ли всегда посылаться заголовок или он все таки будет учитываться в ef…else??
 
 Top
Stierus Супермодератор
Отправлено: 16 Июня, 2009 - 16:14:00
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




заголовки будут высываться, если раньше ничего не отправлялось (в том числе сообщения об ошибках). Если ничего не было - хоть в ифах, хоть в циклах - хоть где, заголовки отправляться будут
 
My status
 Top
Viraban009
Отправлено: 16 Июня, 2009 - 17:04:40
Post Id


Гость


Покинул форум
Сообщений всего: 83
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




А если так:
в условиях(if...else) поставить include().
А инклуды насколько я помню слушают условия? То есть, если инклуд не прошел заголовка и кода нет.

PS даже из функций заголовок отправится (если функцию не объявляли в коде)??
PSS в общем нужно сделать как задуманно выше, любые советы и мнения мне помогут...

(Отредактировано автором: 16 Июня, 2009 - 17:06:59)

 
 Top
JustUserR
Отправлено: 16 Июня, 2009 - 19:30:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Viraban009 В любом случае если нет никакой буфферизации то как только функция header() встретилась то так и происхдит попытка отослать заголовок
Если до этого были echo или HTML-код и не было буфферизации то ничего не отошлется
А что касается incude() и require() тут будет соверешнно разыеные вещи - перва из них включается по требованию и соответственно выполнястя в нужном месте а вторая включается всегда и она может нарушить порядок


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Viraban009
Отправлено: 16 Июня, 2009 - 23:15:57
Post Id


Гость


Покинул форум
Сообщений всего: 83
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




1)
CODE (text):
скопировать код в буфер обмена
  1. header("HTTP/1.1 503 Service Unavailable");
  2. header("Status: 503 Service Unavailable");
  3.  

в чем отличие этих запросов, и что за status в стандартах такого не нашел.

2)
такой метод нормальный будет для того чтобы бот скушал что это 503 ошибка?
CODE (text):
скопировать код в буфер обмена
  1. header("HTTP/1.1 503 Service Unavailable");
  2. header("Status: 503 Service Unavailable");
  3. header("Retry-After: 1200");


3) Я так понял по примеру со status можно оправить совершенно любой заголовок?? (в тонкости не успел вникнуть, поэтому зарание спасибо за ответ Закатив глазки ).
(Добавление)
кстати require тоже поддается условиям, я тоже так думал что require независем, видно мы по одному учебнику учились.

Единственно отличие require и include это возвращаемые ошибки.

(Отредактировано автором: 16 Июня, 2009 - 23:17:25)

 
 Top
Viper
Отправлено: 17 Июня, 2009 - 10:20:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




http://www.php.su/functions/?header

по поводу включений.
include генерит ошибку с уровнем E_WARNING и скрипт продолжает работать дальше
require же генерит E_ERROR и дальше скрипт не выполняется.

(Отредактировано автором: 17 Июня, 2009 - 10:25:31)



-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
JustUserR
Отправлено: 17 Июня, 2009 - 11:15:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Viraban009 Status это вообще особое поле - оно нужно чтобы CGI-приложения могли подменять первую строку HTTP-ответа которую генерирует сервер Apache к примеру
Мне самому мало понятно почему в PHP вообще работает конструкция Header("HTTP/1.1 404 Not Found") вероятно это особенность mod_php ибо во всех обычных CGI-пролодениях надо писать (Если была бы функция Header() на том языке где писать CGI-приложение) Header("Status: HTTP/1.1 200 OK")


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Viraban009
Отправлено: 17 Июня, 2009 - 14:41:07
Post Id


Гость


Покинул форум
Сообщений всего: 83
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




сегодня опытным путем открыл что header() в сборке PHP/5.1.6 слушает условия if...else(хотя предпалагалось что оно сначала обрабатывалось неким препроцессором до обработки кода).
Но из-за малой информативности манула решил всетаки пользоватся include и добавлять через файл header(), потому что не понятно когда и как оно работает. Улыбка
 
 Top
JustUserR
Отправлено: 17 Июня, 2009 - 16:01:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Viraban009 Да нет как раз с header()ом все понятно - как он встретился так и выполнился быть он в функции в классе или еще где
Лишь бы до этого не было echo и HTML-кода как я уже говорил Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB