【PHP】入力フォームと送受信
PHPの機能を利用して、入力フォームからデータ送信と受信をする仕組みを作ります。
HTMLでフォームを作る。
フォームは以前勉強したので、HTMLで書きます。【HTML】フォームを作る - PCゲーマーのWebデザイン備忘録
単純な入力フォーム例
フォーム内の属性はメソッドを「post」、アクションを「output01.php」に飛ぶようにします。<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>入力フォーム</title> </head> <body> <form method="post" action="output01.php"> 名前<br> <input type="text" name="name" autofocus required><br> 備考<br> <textarea name="note" cols="40" rows="5"></textarea><br> 性別<br> <label><input type="radio" name="gender" value="男性" checked> 男性</label> <label><input type="radio" name="gender" value="女性"> 女性</label> <label><input type="radio" name="gender" value="その他"> その他</label><br> 趣味<br> <label><input type="checkbox" name="hobbies[]" value="スポーツ">スポーツ</label><br> <label><input type="checkbox" name="hobbies[]" value="旅行">旅行</label><br> <label><input type="checkbox" name="hobbies[]" value="料理">料理</label><br> <label><input type="checkbox" name="hobbies[]" value="音楽">音楽</label><br> <label><input type="checkbox" name="hobbies[]" value="映画">映画</label><br> <br> 都道府県<br> <select name="pref"> <option value="">都道府県の略</option> <option value="1">北海道</option> <option value="2">青森県</option> <option value="3">秋田県</option> <option value="47">沖縄県</option> </select> <br> <br> <input type="submit" value="送信"> </form> </body> </html>
PHPでデータを受信する。
入力フォームからのデータを読み取るには、スーパーグローバル関数を使います。フォームのほうでメソッドを post にしているので、php では「$_POST」を使います。また同時に入力されたデータに対するセキュリティも付加させます。
書き方:
$変数名=htmlspecialchars($_POST['取得したいnameの値'],ENT_QUOTES,'UTF-8');
- htmlspecialchars … 入力された値をただの文字列に変えます。
- ENT_QUOTES … クウォーツをデータ参照に置き換えます。
これでもし、スクリプトをデータに入力されたとしても、実行されることはありません。
もしチェックボックスなどで複数の値を得たい場合は、name属性にスクエアブラケット([])を付け上で、php側で配列受信できるように書き換えます。
$変数名=htmlspecialchars(implode('、',$_POST['hobbies']),ENT_QUOTES,'UTF-8');
上記のフォーム受信例
output01.php に受信したデータを表示できるようにします。<?php $name=htmlspecialchars($_POST['name'],ENT_QUOTES,'UTF-8'); $note=htmlspecialchars($_POST['note'],ENT_QUOTES,'UTF-8'); $note=nl2br($note);//改行を反映させる。 $gender=htmlspecialchars($_POST['gender'],ENT_QUOTES,'UTF-8'); $hobby=htmlspecialchars(implode('、',$_POST['hobbies']),ENT_QUOTES,'UTF-8'); $pref=htmlspecialchars($_POST['pref'],ENT_QUOTES,'UTF-8'); print $name; print '<br>'; print $note; print '<br>'; print $gender; print '<br>'; print $hobby; print '<br>'; print $pref;
プレビュー
入力フォーム:
output01.php: