⊗ppPmRdIns 405 of 447 menu

PHPでの即時リダイレクト

header関数を使用して実行されるリダイレクトは、この関数が呼び出された時点では発生しません。結局のところ、PHP自体はリダイレクトを実行せず、対応するHTTPヘッダーをブラウザに送信するだけだからです。

これは、リダイレクトがPHPがスクリプト全体を最後まで実行したときにのみ発生することを意味します。このため、様々な望ましくない副作用が起こる可能性があります。

例として、次のコードではリダイレクトを実行するか、データベースにクエリを実行したいとします。しかし、リダイレクトのコマンドがあった場合でも、データベースへのクエリは実行されてしまいます:

<?php if ($_GET['test']) { header('Location: test.php'); } $query = "UPDATE users SET changed=1 WHERE id=1"; mysqli_query($link, $query); // リダイレクト時でも実行される! ?>

このような問題を避けるためには、リダイレクトの直後にdie関数を呼び出す必要があります。この関数はスクリプトの実行を即座に終了させ、リダイレクトがすぐに発生するようにします:

<?php if ($_GET['test']) { header('Location: test.php'); die(); } $query = "UPDATE users SET changed=1 WHERE id=1"; mysqli_query($link, $query); ?>

あなたのコードで何らかの望ましくない副作用を再現してください。その後、die関数を使用してそれを修正してください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否