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