🌊

【初心者向け】複数のフォームからの処理を一つのPHPで行う方法

2021/06/13に公開

概要

この記事では、あらゆるフォームから送信された処理を一つのPHPで処理する方法を解説します。

フォームの操作イメージ

利用イメージ

  • あらゆるサイトのコンタクトフォームからの処理を一つのPHPファイルで処理する事ができる
  • ゲームサイトで複数のページやフォームからの処理を分岐する事ができる

コード

BrachSwitch
├ Branch1.html
├ Branch2.html
└ Branch.php

Branch1.html
<!doctype html>
<html lang="ja">
<head>
	<!-- Required meta tags -->
	<meta charset="utf-8">
	<title>BranchSwitch</title>
</head>
<body>
	<!-- ボタンをクリックすると Branch.php へ遷移 -->
	<form action="Branch.php" method="POST">
		<!-- 遷移する際に order=branch1 という値をPOSTする -->
		<input type="hidden" name="order" value="branch1">
		<button>Branch1</button>
	</form>
</body>
</html>
Branch2.html
<!doctype html>
<html lang="ja">
<head>
	<!-- Required meta tags -->
	<meta charset="utf-8">
	<title>BranchSwitch</title>
</head>
<body>
	<!-- ボタンをクリックすると Branch.php へ遷移 -->
	<form action="Branch.php" method="POST">
		<!-- 遷移する際に order=branch2 という値をPOSTする -->
		<input type="hidden" name="order" value="branch2">
		<button>Branch2</button>
	</form>
</body>
</html>
Branch.php
<?php
	// switch を使って処理を分岐
	switch($_POST['order']){
		// Brach1 がPOSTされた時の処理
		case 'branch1':
			echo "Branch1がクリックされました。";
			break;
		// Brach2 がPOSTされた時の処理
		case 'branch2':
			echo "Branch2がクリックされました。";
			break;
		// 条件に当てはまらない order がPOSTされた時の処理
		default:
			echo "該当する order がPOSTされていません。";
			break;
	}
?>

解説

  • フォームに隠し要素を用意して order=branch1 や、order=branch2 という値をPOSTしてPHPに渡しています。
  • PHPでPOSTされた値を取得してswitchを使って分岐させています。

応用

POSTだけでなく、GETで値を渡す事も可能なので、URLの組み合わせで処理を変える事も可能です。
その際、order 等、独自に決めた値と組み合わせて処理をする事で、適当なURL等で誤った処理が起きない様にする事が出来ます。

Discussion