PCゲーマーのWebデザイン備忘録

PCゲーマーのWebデザイン備忘録。東京都内でWEBデザイナーとして働いています。Webデザインやゲームに関することをブログに書いていきます

【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;

プレビュー

入力フォーム:
f:id:game-web-design:20141028120436p:plain


output01.php
f:id:game-web-design:20141028120449p:plain