コンテンツにスキップ

PHP/HTMLフォームからのデータ受け取り

出典: フリー教科書『ウィキブックス(Wikibooks)』
< PHP

たとえば、以下のような HTML ファイルを作成し、myform.html というファイル名でドキュメントルートにアップロードします。

myform.html
<form action="catchTest.php" method="post">
  <label for="username">ユーザー名を登録:</label><input type="text" name="username">
  <input type="submit" value="登録">
</form>

なお、このコードが表示するページは、

ユーザー名を登録:             登録

のようにレンダリングされます(ブラウザによって表示内容の細部は異なります)。

そして、http://localhost/formtest.html にウェブブラウザでアクセスすると、ウェブブラウザで見たときに「登録」と書いてあるボタン 登録 を押すと、ページが切り替わり、「catchTest.php」から作成された HTML ファイルのウェブページに切り替わります。

form 要素の action 属性と method 属性にしたがって、処理がされているわけです。
input 要素の type 属性が text の場合、文字列入力欄で、上記のようなレンダリングがなされ、1 行の文字列が入力できます。
input 要素の name 属性は、リクエストのインデックスになります。

しかし、これだけでは、まだ PHP ファイルがない状態です。

以下のような catchTest.php ファイルを作成します。

catchTest.php
<?php
	echo "あなたはユーザー名", $_REQUEST['username'], "で登録しました。" ; 
?>

このように、$_REQUEST['名前'] で HTML フォームからの入力を受け取ることができます。もちろん、引数の名前は、HTML 側で input 要素の name 属性で定義したものでなければなりません。

先程の「登録」ボタンのあるページで、ボタンを押すと

あなたはユーザー名◯◯で登録しました。

というように、画面が PHP のページに遷移して、◯◯ の部分にインプットボックスにある文字列を入れた結果が出てきます。

※ もし遷移しない場合は、上記の操作のどれかを抜かしている可能性があります。

localhost経由のアドレスでformtest.html にアクセスせず、直接ダブルクリックでHTMLファイルを起動してしまっていませんか?

なお、遷移先の PHP のページでブラウザのソース表示の機能を使用しても、

(自動作成されたHTMLソースコード)
◯◯と入力されました。入力されたユーザー名を保存しています。

のように、サーバーによって生成された HTML が表示されるだけであり、元の PHP ソースコードはクライアント側には表示されない。

また、ブラウザで直接

http://localhost/catchTest.php

にアクセスしても、

(ウェブブラウザのメイン画面表示)
と入力されました。入力されたユーザー名を保存しています。 

と表示されるだけです。

そのページのソースコードをウェブブラウザで見ても、

(自動作成されたHTMLソースコード)
と入力されました。入力されたユーザー名を保存しています。

と表示されるだけです。

変数名などはブラウザ側では表示されないが、echo のテキスト文字列などは表示されてしまうので、機密情報を echo テキスト文字列に入れないように注意する必要があります。

念のため、サーバーアプリ作成後にはソースを見てみるのが安全です。