入力フォームの作成

PHPのルールが分かったところで、さっそく動的なページを作ってみましょう。
ここでは、名前や日記を入力するときに見かける入力フォームを使って動的ページを作成します。

入力フォームを作成してみよう

以下のHTMLファイルとPHPファイルをemacsで作成します。この2つのファイルは同じ階層(ディレクトリ)に作成して
ください。作成したら、name.htmlにWebブラウザからアクセスします。

name.html

<html> <body> <form action="input.html" method="POST"> 名前を入力してください。<br /> <br /> <input type="text" name="namae"><br /><br /> <input type="submit" name="button" value="入力"> </form> </body> </html>

input.php

<html> <body> <?php print "あなたは".$_POST['namae']."さんですね。<br />"; ?> </body> </html>
※emacsでファイルを作成すると、文字コードが「EUC-JP」になり、そのままWebブラウザで見ると文字化けしてしまいます。
これから、emacsでファイルを編集するときは必ず「Shift-JIS」に変更します。

●ファイルの文字コードをShift-JISにする
     コマンド:C-x [RET] f (Ctrlキーを押しながらXキーを押し、次にEnterキー、Fキーを押す)
     上のコマンドを実行すると、下のほうに
     「Coding system for visited file (default, nil):」と出てくるので、「shift_jis」と入力して[Enter]を押します。
 
     モードライン(画面下部の黒い行)の最初にある「EEE」が「EES」になっていれば文字コードが「Shift-JIS」に
          変わっています。
解説:

name.html

<form action="input.html" method="POST">
サーバにデータを送信したいときは、formタグを使用します。<form>〜</form>に記述されいている値がサーバに
送信されます。
action属性には、データを受け取るファイル名を指定します。上の場合は、name.htmlがinput.phpに値を送信してい
ます。
method属性は、「POST」か「GET」を記述します。これは、データを送信する際の送信方法です。

課題1:method属性の「POST」と「GET」の違いを調べなさい。


「GET」 「POST」
値の渡し方 <form>タグのaction属性で指定したURLの末尾に「?」を加え、その後にURLにデータを追加する <form>タグのaction属性で指定したページのプログラムにデータを送信する
値の取得方法 $_GET['○○'] ○○にname属性で指定した値をあてはめて使用する $_POST['○○'] ○○にname属性で指定した値をあてはめて使用する
使用上の注意 「GET」を指定すると、URLの後ろにデータが付加されるので、パスワードなど公開しはならない情報を扱わないようにすること。データが多くなるとURLも長くなるので、そのような場合は[POST]を使用したほうがいいでしょう。 「POST」を指定すると、「GET」とは違い<form>タグで指定したページ以外では、$_POST変数を利用することができません。

<input type="submit" name="button" value="入力">
送信ボタンを作成しています。この送信ボタンの値(value属性)も取り出すことができます。

input.html

print "あなたは".$_POST['namae']."さんですね。";
この行で出力を行っています。今まで出てきた「print」という関数もPHPで標準で用意されている出力関数です。

"あなたは"と$_POST['namae']の間と$_POST['namae']と"さんですね。"の間に「.」がありますが、これは文字列変数や
文字列などを結合するときにこのように書きます。

$_POST['namae']
$_POSTはスーパーグローバル変数といい、クライアントからの入力情報やサーバ変数を取得するための関数で、
形が決まっています。
$_POSTはPOSTメソッドで送信されてきた値を取得します。この場合は「namae」の値を取得しています。
このほかにも$_SERVER、$_SESSIONなどがありますが、よく使われるのはこの$_POSTと$_GETです。

入力フォームプログラムの実行

課題2:input.phpを編集して、name.htmlの送信ボタンの名前を出力させなさい。

ヒント:name.htmlのボタンのname属性で「button」を指定している。

答え:

input.php

<html> <body> <?php print "あなたは".$_POST['namae']."さんですね。<br />"; //ボタンのname属性は「button」であるため、$_POST['button']で値を表示することができる。 print "ボタンのvalueは「".$_POST['button']."」です。"; ?> </body> </html>
解説:
「name.html」の
タグでは「POST」を指定している。
ボタンの名前(ラベル)を表示するためには、「input.php」のページで$_POST['button']を表示(print)させる。