ホームページ  >  記事  >  バックエンド開発  >  header("Location:login.php")_PHP チュートリアル

header("Location:login.php")_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 14:53:08843ブラウズ

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: 内部バッファの内容を返します。

使用法: 文字列 ob_get_contents(void)

説明: この関数は、出力バッファがアクティブ化されていない場合、現在のバッファの内容を返します。

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();

var_dump($var);

$out = ob_get_contents();

ob_end_clean();

この時点で、var_dump() の出力は既に $out に保存されていますので、これで出力できます。

echo '' . htmlspecialchars($out) '' ;

あるいは将来まで待つか、この文字列をテンプレート(Template)に送ってから出力します

www.bkjia.com本当http://www.bkjia.com/PHPjc/371435.html技術記事 header(Location:login.php) で注意すべきいくつかの問題 header(Location:) は、PHP のリダイレクト ステートメントとして使用されます。実は、使用する際には注意しなければならない点がいくつかあります。 1. ヘッダーの前に要件はありません...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。