PHP/HTMLフォームからのデータ受け取り
たとえば、htmlファイルとして
<form action="catchTest.php" method="post">
ユーザー名を登録: <input type="text" name="username">
<input type="submit" value="登録">
</form>
のようなhtmlファイルを書き、◯◯.html でドキュメントルートにアップロードする。たとえば formtest.html というファイル名だとしよう。
なお、このコードの表示するページは、
ユーザー名を登録: 登録
みたいなページである。
さて、http://localhost/formtest.html にwebブラウザでアクセスして、webブラウザで見たときに「登録」と書いてあるボタン 登録 を押すと、ページが切り替わり、「catchTest.php」から作成されたhtmlファイルのwebページに切り替わる。
- (必ず、上記のlocalhost経由のhttpアドレスでアクセスしないといけない。ダブルクリックしてHTMLを起動しても、上記htmlファイルがphpファイルを発見できずに失敗する。)
form action="catchTest.php" method="post"
のプロパティ内容にしたがって、そういう処理がされている。
input タグは、単に、入力欄をwebページに配置する機能で、 みたいな入力欄が配置される。
登録
inputタグのname プロパティは、ページ外部とデータのやり取りをするための名前。
しかし、これだけだと、まだPHPファイルが無い。
- PHPコード例
<?php
echo "あなたはユーザー名", $_REQUEST['username'], "で登録しました。" ;
?>
このように、 $_REQUEST['名前'],
でHTMLフォームからの入力を受け取れる。もちろん、引数の名前は、html側で、inputタグのnameプロパティで定義したものでなければならない。
さきほどの登録ボタンのあるページで、ボタンを押すと
あなたはユーザー名 ◯◯ で登録しました。
というふうに、画面がphpのページに遷移して、◯◯の部分にインプットボックスにある文字列を入れた結果が出て来る。
- ※ もし遷移しないなら、上記の操作のどれかを抜かしている。おそらく、localhost経由のアドレスでformtest.html にアクセスせず、直接ダブルクリックでhtmlファイルを起動してしまっていると思われる。
なお、遷移先のphpのページでブラウザのソース表示の機能を使用しても
- (自動作成されたHTMLソースコード)
◯◯と入力されました。入力されたユーザー名を保存しています。
(◯◯の部分には、入力した文字列が入る)のように、サーバーによって生成されたhtmlが表示されるだけであり、もとのPHPソースコードはサーバー側には表示されない。
また、ブラウザで直接
にアクセスしても、
- (webブラウザのメイン画面表示)
と入力されました。入力されたユーザー名を保存しています。
と表示されるだけである。
そのページのソースコードをwebブラウザで見ても、
- (自動作成されたHTMLソースコード)
と入力されました。入力されたユーザー名を保存しています。
と表示されるだけである。
変数名などはブラウザ側では表示されないが、echoのテキスト文字列などは表示されてしまうので、けっして機密情報などをechoテキスト文字列に入れないように注意する必要がある。
念のため、サーバーアプリ作成後にはソースを見てみるのが安全である。