PHP+MySQL入門講座【第2回】「フォームからの入力を受け取る」


はじめに

前回(PHP+MySQL入門講座【第1回】「プログラミング環境の設定とPHP+MySQLはじめの一歩」)はPHPの開発環境の構築と、ごく初歩的なPHPプログラムを紹介しました。

今回はフォームにデータを入力し、そのデータを受け取る方法から始めたいと思います。

その前に、変数の復習もかねてちょっとだけウォーミングアップしましょう。

前回の復習的なサンプルコードです。PHPの変数は必ず$記号で始まるのでしたね。

$foodに文字列の‘焼肉’を代入しています。

で、文字列の連結は(.)記号で行うのでしたね。またHTMLタグを$foodに連結することで、HTMLとPHPのコードを連携させることができるのでした。

echoは画面に値を表示するための命令でしたね。

で、こうして作成したPHPプログラムは、~.phpとファイル名をつけて、htdocsフォルダに、文字コードをutf-8にして保存するのでしたね。

そして、XAMPPコントロールパネルでApacheが立ち上がっていることを確認します

これらの準備が出来たら、ブラウザを開いて、http://localhost/ファイル名.phpと入力し、PHPプログラムを実行するのでした。

以上、簡単に、前回までの復習をしてみました。

ここから本題に入ります。

フォームに入力された値を受け取る

まずはサンプルコードを見てみましょう。2つのファイルを用意します。1つは値を入力するためのHTMLファイル。form1.htmlです。もう一つは入力された値を受け取るPHPファイル。get_data.phpです。

ファイル名:form1.html(データを送信するファイル)

これは単なるHTMLファイルです。<form action=”get_data.php” method=”GET”>という部分に着目して下さい。

action=”formに入力されたデータを送る先のPHPファイル名”となっています。

method=”GET”というのは、GET形式で、データを送ることを意味します

GETの場合、URLにパラメーターを付加してデータを送信します

具体的には、「http://localhost/get_data.php?food=フォームに入力された値」という形式でデータが送信されます。上記URLの赤字の部分がURLに付加されたパラメーターです。

また、<input id=”food” type=”text” name=”food” size=”20″ maxlength=”50″ value=””>のname=”food”に着目して下さい。このname属性で指定されたfoodという値が大切になります。

上記のサンプルコードを入力したらhtdocs直下に、form1.phpという名前で保存しておいて下さいね。

ファイル名:get_data.php(データを受け取る側のファイル)

上記のサンプルコードは必ず、get_data.phpという名前で、htdocs直下に保存して下さいね。

それでは、PHPのコードを1行、1行解説していきます。

$food = htmlspecialchars($_GET[‘food’], ENT_QUOTES);

$_GET[‘name属性で指定された値‘]とすることで、form1.htmlから送信されたデータを受け取ることができます。

サンプルコードではこの部分が$_GET[‘food’]となっています。

このfoodはどこからきているかというと、form1.htmlの、

<input id=”food” type=”text” name=”food” size=”20″ maxlength=”50″ value=””>

上記の赤字の部分と対応しています。

そして、$_GET[‘food’]は、htmlspecialchars()の中に入っていますね。

htmlspecialchars()は、フォームに悪意のあるプログラムが入力された際に、それを無効化する関数です。

フォームから値を取得する場合は必ずhtmlspecialchars()を用います。そうすることで、$_GET[‘food’]に悪意のあるスクリプト等が入力されてもWEBサイトを守ることができるというわけです。要はセキュリティ対策ですね。

$food = htmlspecialchars($_GET[‘food’], ENT_QUOTES);のENT_QUOTESはシングルクォーテーション(‘)も安全に受信するためのもので、htmlspecialchars()を用いる際は必ず付け加えるようにします。

なので、フォームからデータを受け取ったら、100%、htmlspecialchars($_GET[‘food’], ENT_QUOTES)という形で安全対策の処理をする。と覚えて下さいね。

echo ‘<p>あなたの好きな食べ物は【’ . $food . ‘】なんですね!お目が高い!</p>’;

この行は簡単ですね。(.)で文字列を連結して画面に表示しているだけです。

実行結果のイメージは以下の通りです。

form

get_data

お次はGETではなくPOSTでフォームに入力されたデータを受け取る方法です。先ほどのサンプルコードをちょこっと変えればいいだけなので簡単ですよ!

ファイル名:form2.html(データを送信するファイル)

<form action=”post_data.php” method=”POST“>この行が変わっただけです。データの送り先が、action=”post_data.php”に変わっています。もう一点。method属性の値がPOSTに変わっていますね。その外には変更点はありません。

ファイル名:post_data.php

POSTでデータを受け取る場合は、$_POST[‘food’]のように指定します。変更点はこの部分だけです。

これで基礎的なデータの受け渡しは一通り説明できたと思います。

尚、ラジオボタンや、プルダウンなどフォームの性質によっては、データの受け渡し方を別途学ぶ必要がありますが、それはそういう処理が必要になった際に都度、ご説明致しますので、ご安心下さい。

PHP+MySQL入門講座【第2回】はこの辺りで終わりたいと思います。

次回もどうぞよろしくお願い申し上げます。

PHP+MySQL入門講座トップへ戻る

[AD]独習PHP 第3版

あわせて読みたい