PHP의 header() 함수를 사용하면
1 |
header( "Location: " . $url );
|
과 같은 페이지 이동이 가능하지만 단점이 있습니다. , 일단 HTTP 헤더 블록이 전송되면 header() 함수를 사용하여 다른 헤더를 보낼 수 없습니다.
현재 페이지 점프는 프런트엔드 HTML이나 JS 기술만 사용할 수 있습니다!
HTTP 헤더 블록이 전송되었는지 어떻게 알 수 있나요?
PHP의 headers_sent() 함수가 도움이 될 수 있습니다.
PHP headers_sent() 함수
headers_sent() 함수는 HTTP 헤더가 전송되었는지, 어디로 전송되었는지 확인합니다.
헤더가 전송되면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
구문
headers_sent(file,line)
参数 |
描述 |
file,line |
可选。 如果设置 file 和 line 参数,headers_sent() 会把输出开始的 PHP 源文件名和行号存入 file 和 line 变量中。 |
팁 및 메모
참고: 일단 헤더 블록이 전송되었으면 header() 함수를 사용하여 다른 헤더를 보낼 수 없습니다. 이 기능을 사용하면 최소한 HTTP 헤더와 관련된 오류 메시지를 피할 수 있습니다.
참고: 선택적 파일 및 줄 매개변수는 PHP 4.3의 새로운 기능입니다.
예시1
4 | header( "Location: http://www.w3school.com.cn/" ); |
예 2
선택적으로 사용 파일 및 줄 매개변수:
02 | // 传递 $file 和 $line,供日后使用 |
04 | if (!headers_sent( $file ,
$line )) { |
05 | header( "Location: http://www.w3school.com.cn/" ); |
07 | // Trigger an error here |
09 | echo "Headers sent in $file on line $line" ; |
위의 지식 포인트를 바탕으로 우리만의 PHP 점프 함수를 정리해보자. :
03 |
* @param string $url 跳转地址
|
04 |
* @param int $time 跳转延时(单位:秒)
|
05 |
* @param string $msg 提示语
|
07 |
function redirect( $url ,
$time = 0, $msg = '' ) {
|
08 |
$url = str_replace ( array ( "n" ,
"r" ), '' ,
$url ); // 多行URL地址支持
|
10 |
$msg = "系统将在 {$time}秒 之后自动跳转到 {$url} !" ;
|
13 |
$str = "<meta http-equiv='Refresh' c/code><code>;
|
20 |
header( "Location: " . $url );
|
22 |
header( "Content-type: text/html; charset=utf-8" );
|
23 |
header( "refresh:{$time};url={$url}" );
|
위 내용은 PHP 리디렉션 웹 페이지와 관련 내용을 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.