페이지 점프를 위해 PHP 헤더를 사용할 때 주의해야 할 몇 가지 문제 요약
저자:Eve Cole
업데이트 시간:2009-06-05 16:25:10
header("location:test.php")를 사용하여 PHP로 이동할 때 다음 사항에 주의해야 합니다. 이는 초보자가 자주 직면하는 몇 가지 문제를 해결하는 데 도움이 됩니다.
1. 위치와 ":" 사이에는 공백이 있어서는 안 됩니다. 그렇지 않으면 오류가 발생합니다.
2. 헤더를 사용하기 전에는 어떠한 출력도 있을 수 없습니다.
3. 헤더 뒤의 PHP 코드도 실행됩니다.
다음은 ASP의 리디렉션 response.redirect와의 비교입니다.
예시 1:
response.redirect "../test.asp"
header("위치:../test.php");
둘 사이의 차이점은 다음과 같습니다.
ASP의 리디렉션 기능은 헤더 파일을 클라이언트에 보낸 후에 작동할 수 있습니다.
좋다
<html><머리></head><몸>
<%response.redirect "../test.asp"%>
</body></html>
PHP의 다음 코드가 오류를 보고하는지 확인하십시오.
<html><머리></head><몸>
<?
header("위치:../test.php");
?>
</body></html>
이것이 유일한 방법입니다:
<?
header("위치:../test.php");
?>
<html><head></head><body>...</body></html>
즉, 헤더 함수는 이전에는 클라이언트에 어떤 데이터도 보낼 수 없습니다.
예 2:
ASP에서
<html><머리></head><몸>
<%
response.redirect "../a.asp"
response.redirect "../b.asp"
%>
</body></html>
결과는 a.asp 파일의 리디렉션입니다.
PHP는 어떻습니까?
<?
header("위치:../a.php");
header("위치:../b.php");
?>
<html><head></head><body></body></html>
b.php를 리디렉션하는 것으로 나타났습니다.
ASP에서 리디렉션을 실행한 후에는 후속 코드가 실행되지 않는 것으로 나타났습니다.
PHP는 헤더를 실행한 후 다음 코드를 계속 실행합니다.
이와 관련하여 PHP의 헤더 리디렉션은 ASP의 리디렉션만큼 좋지 않습니다. 때로는 리디렉션 후 다음 코드를 실행할 수 없습니다.
일반적으로 우리는
만약에(...)
헤더("...");
또 다른
{
...
}
하지만 간단히 다음 방법을 사용할 수 있습니다.
만약에(...)
{ 헤더("...");exit();}
또한 유니코드(UTF-8)를 사용하여 인코딩하는 경우 문제가 발생할 수 있으므로 캐시 설정을 조정해야 합니다.
<[email=%@]%@LANGUAGE="VBSCRIPT[/email]" CODEPAGE="936"%>
<%if Request.ServerVariables("SERVER_NAME")="s.jb51.net" 다음
response.redirect "뉴스/index.htm"
그 외%>
<%다음 경우 종료%>
<스크립트>
var url = 위치.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>