まるもの勉強日記。

実はSE目指してます。

PHP : フォーム処理

 

HTMLで構成されたフォームからデータを送信し、PHPプログラムで受信する。
HTMLフォームを処理する手段は、PHPの最も強力な機能のひとつ。

ちなみに、フォームと所定の形式をもった書式、入力欄のことね。

 


HTMLフォーム

まずは、HTMLフォームについて簡単に説明。

<form action="PHPプログラム" method="post">
名前: <input type="text" name="name" />
<input type="submit" />
</form>

▽▽▽▽▽▽▽▽▽▽こんな感じのフォーム▽▽▽▽▽▽▽▽▽▽

f:id:marumom16:20170630125119p:plain

これで簡単なフォーム完成。

 

作成方法は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 関数。

 


〈参考にしたもの〉

フォームからの入力 PHP Labo

フォームの処理

フォームとのやり取り そふぃのPHP入門

PHPでフォームからデータを受け取る方法(GETとPOST)