ホームページ >バックエンド開発 >PHPチュートリアル >php_PHP チュートリアルの Header('Location:xxx.php') ジャンプの問題
phpにはヘッダーには多くの機能があります。ここでは、ヘッダーを使用してファイルをジャンプする際の注意点をいくつか紹介します。この記事がすべての友人に幸せをもたらすことを願っています。
Header("Location:login.php") 注意すべきいくつかの問題
header("Location:") は PHP のリダイレクト文として機能します。実は、使用する際には注意しなければならない点がいくつかあります。
1. ヘッダーが必要になる前に出力はありません
しかし、私たちはヘッダーの前に多くのことを出力してきましたが、この時点でヘッダーを再度使用すると、明らかに間違っています。ob の概念は、関連する出力をサーバーに保存することを意味します。今のように 1 つの文を実行して 1 つの文を出力し、ヘッダー ステートメントが見つかった場合にのみエラーを報告するのではなく、適切なタイミングで出力します。
具体的なステートメントは次のとおりです: ob_start(); ob_end_clean();................................
2. header("Location:") の後に終了します
それ以外の場合は、引き続き実行されます。ブラウザ側では対応するデータが表示されませんが、パケット キャプチャ分析を実行すると、次のステートメントも実行されていることがわかります。そして、それはブラウザクライアントに送信されますが、ブラウザによって HTML として実行されるわけではありません (ブラウザはヘッダーを実行し、リダイレクト操作を実行します)。
したがって、標準的な使用方法は次のとおりです:
コードは次のとおりです | コードをコピー |
ob_start(); ...... もし(何か){ ob_end_clean(); header("場所: あなたの場所"); 終了; その他{ ...... ob_flush() //省略可能 |
ヘッダーの前に出力したい場合は、php.ini ファイルを変更できます
output_handler =mb_output_handler
またはoutput_handler =on
出力制御機能を使用すると、スクリプト内のデータの出力を自由に制御できます。特にデータ出力後にファイルヘッダーを出力したい場合に非常に便利です。出力制御関数は、header() または setcookie() を使用して送信されるファイル ヘッダー情報には影響せず、echo() および PHP コードと同様のデータ ブロックにのみ影響します。
1. 関連機能の紹介:
1. フラッシュ: バッファーと出力の内容を更新します。
関数形式: flash()
説明: この関数は頻繁に使用され、非常に効率的です。
2. ob_start: 出力バッファを開きます
関数形式: void ob_start(void)
注: バッファーがアクティブ化されると、PHP プログラムからのファイル以外のヘッダー情報はすべて送信されず、内部バッファーに保存されます。バッファの内容を出力するには、ob_end_flush() または flash() を使用してバッファの内容を出力します。
3. ob_get_contents: 内部バッファの内容を返します。
使用法: string ob_get_contents(void)
説明: この関数は、出力バッファがアクティブ化されていない場合、現在のバッファの内容を返します。FALSE を返します。
4. ob_get_length: 内部バッファの長さを返します。
使用法: int ob_get_length(void)
説明: この関数は、出力バッファがアクティブ化されていない場合、ob_get_contents と同じように現在のバッファの長さを返します。その後、FALSE を返します。
5. ob_end_flush: 内部バッファの内容をブラウザに送信し、出力バッファを閉じます。
使用法: void ob_end_flush(void)
説明: この関数は、出力バッファーの内容 (存在する場合) を送信します。
6. ob_end_clean: 内部バッファの内容を削除し、内部バッファを閉じます
使用法: void ob_end_clean(void)
説明: この関数は内部バッファの内容を出力せず、削除します。
7. ob_implicit_flush: 絶対リフレッシュをオンまたはオフにします
使用法: void ob_implicit_flush ([int flag])
注: Perl を使用したことがある人なら誰でも $|=x の意味を知っています。この文字列はバッファをオープン/クローズできます。デフォルトでは、絶対出力をオンにした後にバッファをクローズします。スクリプト出力 ブラウザに直接送信します。flush() を呼び出す必要はありません
ob_start() は出力バッファリングを開始します。この時点で、PHP は出力を停止します。その後、出力は内部バッファーに転送されます。
ob_get_contents() この関数は、内部バッファーの内容を返します。これは、これらの出力を文字列に変換することと同等です。
ob_get_length() は内部バッファの長さを返します。
ob_end_flush() は出力バッファを終了し、バッファの内容を出力します。これ以降、出力は通常の出力になります。
ob_end_clean() は出力バッファを終了し、バッファの内容を破棄します。
たとえば、var_dump() 関数は変数の構造と内容を出力します。これはデバッグ中に役立ちます。
ただし、変数の内容に < や > などの HTML 特殊文字が含まれている場合、Web ページに出力するときに表示されません。
この問題は、出力バッファ機能を使用すると簡単に解決できます。
コードは次のとおりです
ob_start(); | |
ob_end_clean();
|
コードは次のとおりです
エコー '' ; |
|
または将来まで待つか、この文字列をテンプレート (Template) に送信してから出力します。 |