Сомнения по использованию: header("Location: url");

> Берут IE,OPERA,FIREFOX,NETSCAPE
Начиная с каких версий? Плюс выписку с сылкой на RFC по HTTP в студию.
 
Автор оригинала: SiMM
Плюс выписку с сылкой на RFC по HTTP в студию.
Какая выписка на RFC?? :) Я думал, раз вы спрашиваете про браузеры, то понимаете, что это нестандартный хедер и нужно смотреть, как каждый браузер на него реагирует.
Понятно, что он не поддерживается официальным стандартом. Но к сожалению, браузеры не самый лучший пример того, как можно было бы следовать инструкциям. Но с другой стороны, наши приложения будут использовать юзеры именно с помощью этих самых браузеров, так что мы должны также и на них обращать внимание. И если они предлагают обработку "неофициального" хедера, так почему бы не воспользоватся этой возможностью??
 
> И если они предлагают обработку "неофициального" хедера, так почему бы не воспользоватся этой возможностью??
Потому что никто не обязан его поддерживать. И причин им пользоваться, в общем-то, нет.
PS: перечисленные вами браузеры - далеко не единственновозможные клиенты. Кроме того, на пути к клиенту могут существовать "злобные" прокси, режущие непонятные им нестандартные заголовки.
 
А причины пользоваться стандартом есть?? Это же не закон, и если браузеры не поддерживают стандарт, то нам от этого стандарта никакого проку нет
А какие есть ещё популярные браузеры?? Я только Safari знаю - но в нём не проверял.
Кстати этот Хедер изначально (вроде-я не уверен) идёт не из HTTP спецификации, а из META тегов HTML спецификации от W3C, покрайней мере он там присутствует, так что какому стандарту теперь доверять??
 
<offtop>
>так что какому стандарту теперь доверять??
я лично Хедеры беру только CSS2, чего и вам советую.. а HTTP1.1 и HTML это уже не модно
</offtop>
 
> если браузеры не поддерживают стандарт...
... то такие браузеры идут в топку. Выбирайте выражения - "не поддерживают" и "дополняют" - абсолютно разные вещи. Нет этого в спецификации? Клиент не обязан это поддерживать. И приплетать сюда HTML бессмысленно - с точки зрения HTTP это лишь частный случай.
 
Гриша К.
Нужно отличать тех, кто отвечает по делу от тех, кто хочет блеснуть знаниями.
Вся проблема даже не в том, как этот заголовок будет работать.
А в том, что он тебе не нужен
 
Итог:
В любом случае Location работает везде (по крайней мере должен).
Refresh работает сейчас во многих браузерах, но могут возникнуть проблемы с "вредными" проксями и нестандартными браузерами + будущее развитие браузеров неизвестно (то есть неизвестно то, какие стандарты будут поддерживаться, но тенденция всё равно в сторону общепринятых HTTP и HTML)
Гриша К.
Выбирайте сами
Сделайте из этого свою функцию и вставляйте везде, если не понравится всегда можно будет в одном месте подправить
(Я лично только Location пользуюсь)
 
vadim, вам спасибо за то что вы рассказали об этом методе и что привели пример.
Пользователь SiMM мне уже раньше отвечал, ну короче я уже убедился в том, что у него большие знание в PHP, и также Фанат.
А я в <head></head> может быть сделаю. Просто в некоторых местах, хотелось бы применить не мгновенный редирект.

А вот я сдесь оставлю часть примера функции редиректа из форума phpbb. Помойму здесь они используют header
в 2-х вариантах для разных броузеров и ли операционных систем, ну короче для чего-то разного.
Я считаю что программистам phpbb форума можно доверять. Вот что они делаю, мне то конечно это непонятно.

PHP:
	// Redirect via an HTML form for PITA webservers
	if (@preg_match('/Microsoft|WebSTAR|Xitami/', getenv('SERVER_SOFTWARE')))
	{
		header('Refresh: 0; URL=' . $server_protocol . $server_name . $server_port . $script_name . $url);
		echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><meta http-equiv="refresh" content="0; url=' . $server_protocol . $server_name . $server_port . $script_name . $url . '"><title>Redirect</title></head><body><div align="center">If your browser does not support meta redirection please click <a href="' . $server_protocol . $server_name . $server_port . $script_name . $url . '">HERE</a> to be redirected</div></body></html>';
		exit;
	}

	// Behave as per HTTP/1.1 spec for others
	header('Location: ' . $server_protocol . $server_name . $server_port . $script_name . $url);
	exit;
 
vovanium, ну по поводу header, мне здесь все уже подсказли и вдругой теме еще разяъснили. Так что все порядке.
По поводу дырявости незнаю. Но им очень много людей пользуется сейчас, есть официальный сайт поддержки на русском, вроде бы у них щас все впорядке. Я на это надеюсь.
 
Автор оригинала: Гриша К.
vovanium, ну по поводу header, мне здесь все уже подсказли и вдругой теме еще разяъснили. Так что все порядке.
По поводу дырявости незнаю. Но им очень много людей пользуется сейчас, есть официальный сайт поддержки на русском, вроде бы у них щас все впорядке. Я на это надеюсь.
Бывают случаи, когда в виду неповоротливости движка, либо чисто лени может получится так, что если не будет редиректа, загрузится инфа, о которой простому смертному знать не нужно...

Например, в админке - проверили - неавторизован - редирект... Злобные хакеры сделали, чтоб бравзер не заредиректил - тебе *опа...

пс. Для нестандартных бравзеров - обычно после хедера у меня стоит die()... Неэлегантное решение, конечно...
 
Я считаю что программистам phpbb форума можно доверять.
Ты неправильно считаешь.
Доверять надо только себе.
А код не использовать, как икону, а разбираться в нём.
 
PartizaneN, спасибо за разъяснение. Я даже видел здесь на форуме, если не ошибасюь то помойму SiMM тоже говорил про возможность использования die().

Фанат. Я только себе доверяю. Но в программировании знаю мало, поэтому получается, что доверяю тем кто знает больше. Я вот слушаю вас когда вы мне отвечаете в топиках на мои вопросы, получается, что в данный момент я доверяю вам, и благодаря этому я начинаю разбираться в том что вы мне подсказали.
Данный код phpbb я не использую.
Хотя использую полностью их класс temlate, всетаки давно они его используют, мне сним очень удобно.

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

Ну а так-то конечно вы правы, я только, за когда пользователи форума, что-то говорят мне по поводу моего мнения и соображений, дополняют и опровергают. Спасибо.
 
ты там видишь строчку SERVER_SOFTWARE
надо пойти в документацию и посмотреть, что она означает.
 
Узнал.
echo $_SERVER["SERVER_SOFTWARE"];

Apache/1.3.34 (Win32) PHP/4.3.0
выдает имя сервера.

Значит там идет проверка если имя сервера содержит Microsoft или WebSTAR или Xitami, то тогда выполняется данное условие.
Если я правильно понимаю, то этот данный вариант, предусмотрен для случаев, если форум устанавливается на сервера с такими именами.
Точно, я тут прочитал про функцию getenev и про то что, php может ставиться на разные сервера.
А я видел это if (@preg_match('/Microsoft|WebSTAR|Xitami/', getenv('SERVER_SOFTWARE')))
и решил, что как-то заморочено работается с функцией header(), испугался ее использовать.
Спасибо вам Фанат, теперь мне все ясно с данным кодом phpbb.

В заключении темы, что смонения по использованию функции header('Location: http://'.$_SERVER['HTTP_HOST']) развеяны окончательно.
По поводу header мне еще _RVK_ подробно все рассказал, там есть примеры и ссылки он мне оставлял там полезные, так что для тех у кого будут сомнения или непонимание, также читайте тему начиная с этого сообщения http://phpclub.ru/talk/showthread.php?postid=586368#post586368
 
Сверху