🌊
【初心者向け】複数のフォームからの処理を一つのPHPで行う方法
概要
この記事では、あらゆるフォームから送信された処理を一つの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