Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Redirect-Webseite

PHP-Redirect-Webseite

WBOY
WBOYOriginal
2016-07-30 13:30:381443Durchsuche

Mit der Funktion header() von PHP können Sie Seitensprünge erzielen, z. B.

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

Aber es gibt einen Nachteil Sobald der HTTP-Header-Block gesendet wurde, können Sie die Funktion header() nicht mehr zum Senden anderer Header verwenden.

Derzeit können Sie nur Front-End-HTML- oder JS-Technologie verwenden, um Seitensprünge zu erzielen!

Woher wissen Sie, dass der HTTP-Header-Block gesendet wurde?

Die PHP-Funktion headers_sent() kann helfen.


PHP headers_sent()-Funktion

headers_sent()-Funktion prüft, ob und wohin HTTP-Header gesendet wurden.

Gibt true zurück, wenn der Header gesendet wurde, andernfalls false.

Syntax

headers_sent(file,line)

参数 描述
file,line 可选。
如果设置 file 和 line 参数,headers_sent() 会把输出开始的 PHP 源文件名和行号存入 file 和 line 变量中。

Tipps und Hinweise

Hinweis: Sobald der Header-Block vorhanden ist gesendet wurde, können Sie die Funktion header() nicht zum Senden anderer Header verwenden. Durch die Verwendung dieser Funktion können zumindest Fehlermeldungen im Zusammenhang mit HTTP-Headern vermieden werden.
Hinweis: Die optionalen Datei- und Zeilenparameter sind neu in PHP 4.3.

Beispiel 1

1 <?php

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

3if(!headers_sent()) {

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

5 exit;

6}

7?>

Beispiel 2

Verwenden Sie optional The Datei- und Zeilenparameter:

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?>

Basierend auf den oben genannten Wissenspunkten können wir unsere eigene PHP-Sprungfunktion aussortieren :

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 }

Das Obige stellt die PHP-Umleitungs-Webseite vor, einschließlich der relevanten Inhalte. Ich hoffe, dass sie für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn