Resumo de vários problemas aos quais prestar atenção ao usar PHP Header para saltos de página
Autor:Eve Cole
Data da Última Atualização:2009-06-05 16:25:10
Ao usar header("location:test.php") para pular em PHP, você deve prestar atenção aos seguintes pontos, que ajudarão a resolver alguns problemas que os novatos costumam encontrar.
1. Não pode haver espaço entre o local e ":", caso contrário ocorrerá um erro.
2. Não pode haver nenhuma saída antes de usar o cabeçalho.
3. O código PHP após o cabeçalho também será executado.
A seguir está uma comparação com o redirecionamento response.redirect em asp:
Exemplo 1:
resposta.redirect "../test.asp"
header("localização:../test.php");
A diferença entre os dois:
A função de redirecionamento do ASP pode funcionar após enviar o arquivo de cabeçalho ao cliente.
como
<html><head></head><body>
<%response.redirect "../test.asp"%>
</body></html>
Verifique se o seguinte código em php reportará um erro:
<html><head></head><body>
<?
header("localização:../test.php");
?>
</body></html>
Esta é a única maneira:
<?
header("localização:../test.php");
?>
<html><head></head><body>...</body></html>
Ou seja, a função de cabeçalho não pode enviar nenhum dado ao cliente antes.
Exemplo 2:
em asp
<html><head></head><body>
<%
resposta.redirect "../a.asp"
resposta.redirect "../b.asp"
%>
</body></html>
O resultado é um redirecionamento do arquivo a.asp.
E quanto ao php?
<?
header("localização:../a.php");
header("localização:../b.php");
?>
<html><head></head><body></body></html>
Descobrimos que ele redireciona b.php.
Acontece que após executar o redirecionamento em asp, o código subsequente não será executado.
Depois que o php executa o cabeçalho, ele continua executando o código a seguir.
A este respeito, o redirecionamento de cabeçalho em php não é tão bom quanto o redirecionamento em asp. Às vezes, não podemos executar o seguinte código após o redirecionamento:
Geralmente usamos
se(...)
cabeçalho("...");
outro
{
...
}
Mas podemos simplesmente usar o seguinte método:
se(...)
{ header("...");exit();}
Observe também que podem ocorrer problemas se Unicode (UTF-8) for usado para codificação e as configurações de cache precisarem ser ajustadas.
<[email=%@]%@LANGUAGE="VBSCRIPT[/email]" CODEPAGE="936"%>
<%if Request.ServerVariables("SERVER_NAME")="s.jb51.net" então
resposta.redirect "notícias/index.htm"
outro%>
<%fim se%>
<roteiro>
var url = localização.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';
</script>