phpリダイレクトWebページ

WBOY
リリース: 2016-07-30 13:30:38
オリジナル
1443 人が閲覧しました

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 标头有关的错误信息。
注释:可选的 file 和 line 参数是 PHP 4.3 中新加的。

例子1

1 <?php

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

3if(!headers_sent()) {

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

5 exit;

6}

7?>

例子2

使用可选的 file 和 line 参数:

01 <?php

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

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

04if(!headers_sent($file1$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 跳转延时(单位:秒)

header("Location: "
05  * @param string $msg 提示语
🎜. ); 🎜🎜🎜🎜🎜🎜🎜🎜ただし、HTTP ヘッダー ブロックが送信されると、header() 関数を使用して他のヘッダーを送信することができないという欠点があります。 🎜🎜現時点では、ページジャンプを実現するにはフロントエンド HTML または JS テクノロジーのみを使用できます。 🎜🎜HTTP ヘッダー ブロックが送信されたことを確認するにはどうすればよいですか? 🎜🎜PHP の headers_sent() 関数が役に立ちます。 🎜
🎜PHP headers_sent() 関数 🎜🎜headers_sent() 関数は、HTTP ヘッダーが送信されたかどうか、および送信された場所を確認します。 🎜🎜ヘッダーが送信された場合は true を返し、そうでない場合は false を返します。 🎜🎜構文🎜
🎜headers_sent(file,line)🎜
🎜🎜🎜🎜🎜ファイル、行🎜🎜はオプションです。
ファイルとラインのパラメータが設定されている場合、headers_sent() は PHP ソース ファイル名と出力が開始される行番号をファイルとラインの変数に保存します。 🎜🎜🎜🎜🎜ヒントとメモ🎜🎜注: ヘッダー ブロックが送信されると、header() 関数を使用して追加のヘッダーを送信することはできません。この関数を使用すると、少なくとも HTTP ヘッダーに関連するエラー メッセージを回避できます。
注: オプションのファイルおよび行パラメータは、PHP 4.3 で新しく追加されました。 🎜🎜例1🎜🎜🎜🎜🎜🎜🎜🎜🎜1🎜🎜🎜🎜<?php🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜2🎜 🎜🎜🎜 // ヘッダーが送信されない場合は、ヘッダーを送信します 🎜 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜3🎜🎜🎜🎜if🎜🎜(!headers_sent()) {🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜🎜4🎜🎜🎜🎜 🎜🎜ヘッダー(🎜🎜")場所: http://www.w3school.com.cn/"🎜🎜);🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜5🎜🎜🎜🎜 🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜🎜6🎜🎜 🎜🎜}🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜7🎜🎜🎜🎜?>🎜🎜🎜🎜 🎜🎜🎜🎜🎜例 2 🎜🎜オプションのファイルと行パラメータを使用します: 🎜🎜🎜🎜🎜🎜🎜 🎜🎜01🎜🎜🎜🎜<?php🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜02🎜🎜 🎜🎜// 後で使用するために $file と $line を渡します🎜 🎜🎜 🎜🎜🎜🎜🎜🎜🎜🎜 🎜03🎜🎜🎜🎜// 事前に割り当てないでください 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜04 🎜🎜🎜🎜if🎜🎜(!headers_sent(🎜 🎜$ファイル🎜🎜、 🎜🎜$line🎜🎜)) {🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜05🎜🎜🎜🎜 ) 🎜🎜header(🎜🎜"場所: http://www.w3school.com .cn/"🎜 🎜 );🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜06🎜🎜🎜🎜 🎜🎜🎜🎜🎜07🎜🎜🎜🎜🎜 🎜// ここでエラーをトリガーします 🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜08🎜🎜🎜🎜} 🎜🎜else🎜🎜{🎜🎜🎜🎜🎜🎜🎜🎜 "ヘッダーが送信されました" $file on line $line"🎜🎜;🎜🎜🎜🎜 🎜🎜🎜🎜🎜🎜🎜🎜 10🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜11🎜🎜🎜🎜 }🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜12 🎜🎜🎜🎜?>🎜🎜🎜🎜🎜🎜🎜🎜
🎜上記の知識ポイントに基づいて、PHP ジャンプ関数を整理できます: 🎜🎜🎜🎜🎜 🎜* URLジャンプ🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 03🎜🎜🎜🎜🎜🎜* @param string $url アドレスジャンプ🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜🎜🎜04🎜🎜🎜🎜🎜🎜 * @param int $time ジャンプ遅延 (単位: 秒) 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜05🎜🎜🎜🎜 🎜🎜* @param string $msg プロンプト 🎜🎜🎜🎜🎜

パラメータ 説明
06  */

07 functionredirect($url06$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 }

🎜07🎜🎜🎜 🎜関数🎜🎜リダイレクト(🎜🎜$url🎜🎜, 🎜🎜$time🎜🎜= 0, 🎜🎜$msg🎜🎜= 🎜🎜''🎜🎜) {🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜08🎜🎜 🎜🎜 🎜🎜$url🎜🎜= 🎜🎜 str_replace🎜🎜(🎜🎜array🎜🎜(🎜🎜"n"🎜🎜, 🎜🎜"r"🎜🎜)、🎜🎜''🎜🎜、 ... 🎜(🎜🎜空🎜🎜(🎜🎜$msg 🎜🎜))数秒後に自動的に {$url} にジャンプします。 ;🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜11🎜🎜🎜🎜 🎜🎜🎜🎜12🎜🎜🎜🎜 🎜🎜if🎜 🎜(headers_sent() ) {🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 13°🎜🎜🎜🎜; 🎜🎜🎜🎜🎜🎜🎜🎜16🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜17🎜🎜🎜🎜 (🎜🎜$str🎜🎜);🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜18🎜🎜🎜🎜}🎜🎜{🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜19🎜🎜🎜🎜🎜🎜🎜);🎜🎜 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜21🎜🎜🎜🎜 else🎜🎜{🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜22 ErHeader ( 🎜🎜 "Content-Type: Text/HTML; Charset = UTF-8 " 🎜🎜); 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜23🎜🎜🎜🎜 🎜🎜ヘッダー ( 🎜🎜"refresh:{$time};url={$url}"🎜) 🎜);🎜🎜🎜 🎜🎜🎜🎜🎜🎜🎜🎜🎜24🎜🎜🎜🎜ちょ🎜🎜(🎜🎜$msg🎜🎜 );🎜🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜🎜25🎜🎜🎜🎜🎜🎜🎜26🎜🎜🎜 🎜 🎜🎜🎜🎜🎜🎜🎜🎜🎜27🎜🎜🎜🎜}🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜28🎜🎜🎜 🎜}🎜🎜🎜🎜🎜 🎜 上記では、関連コンテンツを含む PHP リダイレクト Web ページを紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。 🎜 🎜 🎜
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート