>백엔드 개발 >PHP 튜토리얼 >PHP 리디렉션 웹 페이지

PHP 리디렉션 웹 페이지

WBOY
WBOY원래의
2016-07-30 13:30:381442검색

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

1 <?php

2// 如果报头未发送,则发送一个

3if(!headers_sent()) {

4 header("Location: http://www.w3school.com.cn/");

5 exit;

6}

7?>

예 2

선택적으로 사용 파일 및 줄 매개변수:

01 <?php

02// 传递 $file 和 $line,供日后使用

03// 不要预先为它们赋&#20540;

04if(!headers_sent($file, $line)) {

05 header("Location: http://www.w3school.com.cn/");

06 exit;

07 // Trigger an error here

08} else{

09 echo"Headers sent in $file on line $line";

10 exit;

11}

12?>

위의 지식 포인트를 바탕으로 우리만의 PHP 점프 함수를 정리해보자. :

01 /**

02  * URL跳转

03  * @param string $url 跳转地址

04  * @param int $time 跳转延时(单位:秒)

05  * @param string $msg 提示语

06  */

07 functionredirect($url, $time= 0, $msg= '') {

08     $url= str_replace(array("n", "r"), '', $url); // 多行URL地址支持

09     if(empty($msg)) {

10         $msg= "系统将在 {$time}秒 之后自动跳转到 {$url} !";

11     }

12     if(headers_sent()) {

13         $str= "<meta http-equiv='Refresh' c/code><code>;

14         if($time!= 0) {

15             $str.= $msg;

16         }

17         exit($str);

18     } else{

19         if(0 === $time) {

20             header("Location: ". $url);

21         } else{

22             header("Content-type: text/html; charset=utf-8");

23             header("refresh:{$time};url={$url}");

24             echo($msg);

25         }

26         exit();

27     }
28 }

위 내용은 PHP 리디렉션 웹 페이지와 관련 내용을 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.