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

< PHP

たとえば、htmlファイルとして

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


のようなhtmlファイルを書き、◯◯.html でドキュメントルートにアップロードする。たとえば myform.html というファイル名だとしよう。

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

ユーザー名を登録:             登録

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

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

(必ず、上記のlocalhost経由のhttpアドレスでアクセスしないといけない。ダブルクリックしてHTMLを起動しても、上記htmlファイルがphpファイルを発見できずに失敗する。)


form action="catchTest.php" method="post" のプロパティ内容にしたがって、そういう処理がされている。


type属性がtextのinput 要素は文字列入力欄で、          のようなレンダリングがなされ、1行の文字列が入力できます。


登録

input要素の属性nameは、ページ外部とデータのやり取りをするための名前。

しかし、これだけだと、まだ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テキスト文字列に入れないように注意する必要がある。

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