戻る

自分自身のフォームデータを受け取る

$_SERVER["PHP_SELF"]

HTML文の<form>タグにおいて、フォームへの入力データの送信先を指示するaction属性に「$_SERVER["PHP_SELF"]」を指定すると、そのPHPファイル自身にデータを送信することができます。この方法を使うと、「HTMLフォームを表示するためのHTML文」と「入力されたデータを処理するPHPスクリプト」を1つのPHPファイル内にまとめることができます。

この時、フォームを表示するためのHTMLは通常の書き方で構いません。データを受け取る側のPHPスクリプトでは、初めてそのPHPファイルが呼ばれたのか、あるいはHTMLフォームからデータが送信されて呼ばれたのかを判別する必要があります。この例では「isset($_POST["btnExec"])という式でそれを判別しています。

HTMLフォームからデータが送信された場合はsubmitボタンがクリックされているので、ボタンのname属性である「btnExec」という変数の情報も一緒に送られてきます。そして、そこにはボタンのvalue属性に設定された文字列が代入されています。変数に何らかの阿多が代入されているので、「isset($_POsT["btnExec"])」の返り値はTrueとなり、if文で囲まれた、受け取り側のデータを画面出力するスクリプトが実行されます。

一方、このPHPファイルが初めて呼ばれた場合は「btnExec」変数は未定義の状態で、「isset($_POST[btnExec])」はFalseを返します。このためif構文で囲まれたスクリプトは実行されず、以降のHTMLフォームを表示するHTML文だけがWebブラウザに送られます。

<!DOCTYPE HTML>
<html lang="ja-JP">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<?php
if(isset($_POST["btnExec"])){
	$name = $_POST["username"];
	$address = $_POST["useraddress"];
	
	echo "送信送信されたデータは<br>";
	echo "名前→" . $name . "<br>";
	echo "住所→" . $address . "<br>";
}
?>
名前と住所を入力して「送信」ボタンをクリックしてください。
<form action="<?=$_SERVER["PHP_SELF"]?>" method="POST">
名前:<input type="text" size="40" name="username"><br>
住所:<input type="text" size="40" name="useraddress"><br>
<input type="submit" name="btnExec" value="送信">
</form>
</body>
</html>

inserted by FC2 system