Краткое изложение нескольких проблем, на которые следует обратить внимание при использовании заголовка PHP для перехода по страницам
Автор:Eve Cole
Время обновления:2009-06-05 16:25:10
При использовании header("location:test.php") для перехода в PHP следует обратить внимание на следующие моменты, которые помогут решить некоторые проблемы, с которыми часто сталкиваются новички.
1. Между местоположением и ":" не может быть пробела, иначе возникнет ошибка.
2. Перед использованием заголовка не может быть никакого вывода.
3. Код PHP после заголовка также будет выполнен.
Ниже приводится сравнение с перенаправлением response.redirect в asp:
Пример 1:
ответ.перенаправление "../test.asp"
заголовок("Местоположение:../test.php");
Разница между ними:
Функция перенаправления ASP может работать после отправки файла заголовка клиенту.
нравиться
<html><head></head><body>
<%response.redirect "../test.asp"%>
</body></html>
Проверьте, сообщит ли следующий код в php об ошибке:
<html><head></head><body>
<?
заголовок("Местоположение:../test.php");
?>
</body></html>
Это единственный способ:
<?
заголовок("Местоположение:../test.php");
?>
<html><head></head><body>...</body></html>
То есть функция заголовка не может раньше отправлять какие-либо данные клиенту.
Пример 2:
в жерехе
<html><head></head><body>
<%
ответ.перенаправление "../a.asp"
ответ.перенаправление "../b.asp"
%>
</body></html>
Результатом является перенаправление файла a.asp.
А что насчет php?
<?
заголовок("Местоположение:../a.php");
заголовок("Местоположение:../b.php");
?>
<html><head></head><body></body></html>
Мы обнаружили, что он перенаправляет b.php.
Получается, что после выполнения редиректа в asp последующий код выполняться не будет.
После того, как php выполнит заголовок, он продолжит выполнение следующего кода.
В этом отношении перенаправление заголовков в php не так хорошо, как перенаправление в asp. Иногда после перенаправления мы не можем выполнить следующий код:
Обычно мы используем
если(...)
заголовок("...");
еще
{
...
}
Но мы можем просто использовать следующий метод:
если(...)
{ заголовок ("..."); выход();}
Также обратите внимание, что могут возникнуть проблемы, если для кодирования используется Юникод (UTF-8), и необходимо настроить параметры кэша.
<[email=%@]%@LANGUAGE="VBSCRIPT[/email]" CODEPAGE="936"%>
<%if Request.ServerVariables("SERVER_NAME")="s.jb51.net" тогда
response.redirect "news/index.htm"
еще%>
<%конец, если%>
<скрипт>
вар URL = location.href;
if(url.indexOf('http://www.devdao.com/')!=-1)location.href='/index/index.htm';
if(url.indexOf('http://www.knowsky.com/')!=-1)location.href='/index1/index.htm';
if(url.indexOf('http://www.google.com/')!=-1)location.href='/cn/index.asp';
if(url.indexOf('http://www.baidu.com/')!=-1)location.href='/cn/index.asp';
</скрипт>