PHP で前のページに戻る
この記事では、PHP で前のページに戻るためのいくつかの方法を紹介します。
HTTP_REFERER リクエストヘッダーを使用して、PHP の前のページに戻ります
HTTP_REFERER リクエストヘッダーは、PHP で現在のページがリクエストされた場所からのページの URL を返します。ヘッダーにより、サーバーはユーザーが現在のページにアクセスしている場所を確認できます。ヘッダーは、$_SERVER 配列のインデックスとして使用されます。header() 関数を location ヘッダーとともに使用して、現在のページを前のページにリダイレクトできます。前のページに戻るには、location を $SERVER['HTTP_REFERER'] に設定する必要があります。
HTTP_REFERER ヘッダーがどのように機能するかを見てみましょう。たとえば、HTML でボタンを作成します。action 属性を home.php に設定し、method 属性を post に設定します。ファイルを index.php として保存します。home.php ファイルで、フォームが isset() 関数で送信されているかどうかを確認します。次に、echo 関数を使用して、$_SERVER[HTTP_REFERER] ヘッダーを表示します。
サンプルコード:
<form action ="home.php" method = "POST">
<button type="submit" name="button"> Submit</button>
</form>
if(isset($_POST['button'])){
echo $_SERVER[HTTP_REFERER];
}
出力:
http://localhost/index.php
ここでは、index.php ファイルにフォームを作成しました。次に、フォームが home.php ファイルに送信されます。これは、home.php ページが index.php ページから要求されたことを意味します。したがって、index.php ページがリファラーです。上記の出力セクションは、HTTP_REFERER がリファラーである URL http://localhost/index.php を返すことを示しています。
私たちの目標は、現在のページ home.php を前のページ index.php にリダイレクトすることです。
たとえば、home.php ファイルに変数 $message を作成して、リダイレクトが発生した後に表示されるメッセージを保存します。urlencode() を使用して、そのパラメーターにメッセージを書き込みます。次に、header() 関数を記述して、リダイレクトの場所を設定します。$_SERVER[HTTP_REFERER] と"?message=".$message を連結し、header() 関数の location の値を設定します。次に、die 関数を呼び出します。index.php ファイルで、echo 関数を使用してフォームのすぐ下に $_GET['message'] 変数を出力します。
ここでは、メッセージは URL で照会される文字列であるため、urlencode() 関数を使用してメッセージを書き込みました。$_GET 配列の message インデックスは、header() 関数の前のページを参照する URL で使用した変数です。
index.php ページのボタンをクリックすると、フォームは home.php に送信され、前のページの index.php ページにリダイレクトされます。
このようにして、header() 関数と HTTP_REFERER ヘッダーを使用して、現在のページを PHP の前のページに戻すことができます。
サンプルコード:
//index.php
<form action ="home.php" method = "POST">
<button type="submit" name="button"> Submit</button>
</form>
<?php
if(isset($_GET['message'])){
echo $_GET['message'];
}
?>
//home.php
if(isset($_POST['button'])){
$message = urlencode("After clicking the button, the form will submit to home.php. When, the page home.php loads, the previous page index.php is redirected. ");
header("Location:".$_SERVER[HTTP_REFERER]."?message=".$message);
die;
}
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn