PHP : フォーム処理
HTMLで構成されたフォームからデータを送信し、PHPプログラムで受信する。
HTMLフォームを処理する手段は、PHPの最も強力な機能のひとつ。
ちなみに、フォームと所定の形式をもった書式、入力欄のことね。
HTMLフォーム
まずは、HTMLフォームについて簡単に説明。
<form action="PHPプログラム" method="post">
名前: <input type="text" name="name" />
<input type="submit" />
</form>
▽▽▽▽▽▽▽▽▽▽こんな感じのフォーム▽▽▽▽▽▽▽▽▽▽
これで簡単なフォーム完成。
作成方法はhtmlのファイルを作成し、上記のHTMLを書くだけ。
form タグを使用すると入力フォームを表示できる。
<form action="〇〇〇.php" method="post"></form>
action...データの送信先
method...データの送信方法
フォームでのデータの送信方法(PHPにおけるデータの受信方法)は二通り。
・GETリクエスト…データがURLで引き渡される
・POSTリクエスト…データがURLで引き渡されない
<input type="text" name="sample" />
input タグの type に text を指定すると、一行入力項目を表示する事ができる。
name で指定したキーワードを基に、PHPでデータを受け取る。
<input type="submit" />
input タグの type に submit を指定すると、データ送信ボタンを表示する
value で指定するとその語句がボタンに表示される
PHPでのデータ受信
PHPでは、フォームから送信されたデータは自動的に特別な連想配列に格納される。
ブラウザからPOSTメソッドで送信されたデータは、$_POSTという連想配列に格納される。
GETメソッドで送信されたデータは、$_GETという連想配列に格納される。
POST形式、GET形式のどちらも使用する場合には$_REQUESTが便利。POST形式のデータもGET形式のデータも両方格納される。
※$_REQUESTを使用した場合、せっかくPOST形式で送信しているデータをGET形式でURLから送信できる事になってしまい、セキュリティ的にあまりお勧めできないらしい。
送信されたデータを表示させる際、HTMLが反映されないようにしなければならない。
<,>,$," などをブラウザで文字列として表示させるには、 htmlspecialchars 関数を使用する。
htmlspecialchars($_POST["name"])
続けて ENT_QUOTES を入力すると ' (シングルクォート)も変換される。
この処理は、送信されたデータを表示させるときには必ず行うこと。
そのままにすると、HTML、JavaScriptをそのまま解釈してしまうので。
改行が含まれる文字列を表示させるには、 nl2br 関数を使用する。
nl2br($_POST["name"])
これで、文字列中の改行文字が
に変換されて返されるようになる。
PHPによっては ',",\ など自動的にエスケープすることがある。
それをなくすのは、 stripslashes 関数。
逆にエスケープするには addlashes 関数。
〈参考にしたもの〉