PHP で前のページに戻る

Subodh Poudel 2022年12月21日
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 Poudel
Subodh Poudel avatar Subodh Poudel avatar

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