メールフォーム

formタグについて

<form action="get.php" method="get">

<form>〜</form> 開始タグ.終了タグ
action="○○" データの送信先URIを指定
method="○○" postかgetを指定(省略した場合はgetになっている)
postとgetの違い
    • post
       送れるデーター量が多い。URLにデーターが入らないのでフォームの場合に用いられる。

    • get
       データーに制限がある。URLに情報が入るので、検索エンジンなどで用いられる。
       (特定のページをブックマークするのに便利)


      URIの後ろに「?[名前1]=[値1]&[名前2]=[値2]...」という形式でデータが付加
      *このときにURIに付加されるデータ:クエリ文字列
      *クエリ文字列の[名前]は、フォーム部品のname属性の値

method="get"の処理

  • 「input.php」の作成
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>フォームに入力した内容を取得する</title>
</head>
<body>
<h1>フォームに入力した内容を取得する</h1>
<form action="get.php" method="get">
<dl>
<dt><label for="name">name  :</label></dt>
<dd><input type="text" name="name" id="name" size="20" maxlength="10" value=""></dd>
<dt><label for="mail">mail:</label></dt>
<dd><input type="text" name="mail" id="mail" size="50"  maxlength="50" value=""></dd>
</dl>
<input type="submit" name="submit" value="送信">
</form>
</body>
</html>
  • 「get.php」の作成
<?php
  $name = htmlspecialchars( $_GET[ 'name' ], ENT_QUOTES, 'UTF-8' );
  $mail = htmlspecialchars( $_GET[ 'mail' ], ENT_QUOTES, 'UTF-8' );
  print '名前は、' . $name .' です<br>';
  print 'メールアドレスは、' . $mail . 'です<br>';

method="post"の処理

  • 「input.php」の作成
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>フォームに入力した内容を取得する</title>
</head>
<body>
<h1>フォームに入力した内容を取得する</h1>
<form action="output3.php" method="post">
<dl>
<dt><label for="name">お名前:</label></dt>
<dd><input type="text" name="name" id="name" size="20" maxlength="10" value=""></dd>
<dt><label for="mail">メールアドレス:</label></dt>
<dd><input type="text" name="mail" id="mail" size="50" maxlength="50" value=""></dd>
<dt>性別:</dt>
<dd>
<input id="gender_male" type="radio" name="gender" value="男性" checked><label for="gender_male">男性</label>
<input id="gender_female" type="radio" name="gender" value="女性"><label for="gender_female">女性</label>
<input id="gender_other" type="radio" name="gender" value="その他"><label for="gender_other">その他</label>
</dd>
<dt><label for="message">お問い合わせ内容:</label></dt>
<dd><textarea name="message" id="message" cols="50" rows="4" value=""></textarea></dd>
</dl>
<input type="submit" value="送信する">
</form>
</body>
  • 「output.php」の作成
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>変数を使って、同じプログラムが重なるのを防ぐ</title>
</head>
<body>
<h1>変数を使って、同じプログラムが重なるのを防ぐ</h1>
<?php
$name = htmlspecialchars( $_POST[ 'name' ], ENT_QUOTES);
$mail = htmlspecialchars( $_POST[ 'mail' ], ENT_QUOTES);
$gender = htmlspecialchars( $_POST[ 'gender' ], ENT_QUOTES);
$message = htmlspecialchars( $_POST[ 'message' ], ENT_QUOTES);
?>
<dl>
<dt> お名前:</dt>
<dd><?php print $name; ?></dd>
<dt> メールアドレス:</dt>
<dd><?php print $mail; ?></dd>
<dt> 性別:</dt>
<dd><?php print $gender; ?></dd>
<dt> メッセージ:</dt>
<dd><?php print $message; ?></dd>
</dl>
</body>
</html>

htmlspecialchars関数

文字の中には HTML において特殊な意味を持つものがある。
それらを単純に値として表示するために、HTML の表現形式に変換する関数。
htmlspecialchars関数は、これらの変換を行った結果の文字列を返す。

htmlspecialchars('文字列',エスケープの種類,'文字コード')

POST/GETメソッド

入力データをCGIに引き渡す方法としてPOSTメソッド,GETメソッドがある。
これらはリクエストの種類を指定するもので「リクエストメソッド」と呼ぶ。

  1. WebブラウザからリクエストがWebサーバーへ送信。
  2. リクエストを受けたWebサーバーはレスポンスを返す。

メールフォームを作成

  • 「input.php
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>入力フォームあれこれ</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>入力フォームあれこれ</h1>
<form name="input_form" action="output4.php" method="post">

<table>
<tr>
<th>氏名</th>
<td><input type="text" name="name" size="40" maxlength="20"></td>
</tr>
<tr>
<th>好きな色</th>
<td>
<select name="color">
<option value="">以下の中から選択してください</option>
<option value="赤"></option>
<option value="青"></option>
<option value="黄色">黄色</option>
</select>
</td>
</tr>
<tr>
<th>性別</th>
<td>
<input type="radio" name="gender" value="男性" checked>男性<br>
<input type="radio" name="gender" value="女性">女性
</td>
</tr>
<th>趣味</th>
<td>
<input type="checkbox" name="hobbies[]" value="ゴルフ">ゴルフ<br>
<input type="checkbox" name="hobbies[]" value="読書">読書<br>
<input type="checkbox" name="hobbies[]" value="旅行">旅行<br>
</td>
</tr>
<tr>
<th>自己紹介</th>
<td>
<textarea name="question" rows="3" cols="40"></textarea>
</td>
</tr>
</table>
<input type="submit" value="submit" class="btn">
<input type="reset" value="reset" class="btn">
</form>
</body>
</html>
  • 「style.css
@charset "UTF-8";
/* CSS Document */

html,body,div,ul,li,table,tr,th,td,form,p {
	margin:0;
	padding:0;
}

body  {
	background:#754090;
	font-size:16px;
}

form,table {
	width:700px;
	height:auto;
	margin:0 auto;
	background:#F4F3F3;
	padding:5%;
}

table,tr,td {
	border-collapse:collapse;
	border-spacing: 0;
	border:1px #A09F9F dotted;
}

th {
	width:300px;
}

th,td {
	padding:5%;
}

h1 {
	color:#C5C3B9;
	font-size:130%;
	margin-left:50px;
}

.btn {
	margin-top:5px;
	color:#fff;
	background:#0A0909;
	border:1px solid #000;
	padding:5px;
}
  • 「output.php
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>入力フォームあれこれ</title>
</head>
<body>
<h1>入力フォームあれこれ</h1>
<p>ご協力ありがとうございました。</p>
<table>
<tr>
<th>氏名</th>
<td><?php print htmlspecialchars( $_POST[ 'name' ], ENT_QUOTES ); ?></td>
</tr>
<tr>
<th>好きな色</th>
<td><?php print htmlspecialchars( $_POST[ 'color' ], ENT_QUOTES ); ?></td>
</tr>
<tr>
<th>性別</th>
<td><?php print htmlspecialchars( $_POST['gender'],ENT_QUOTES); ?></td>
</tr>
<tr>
<th>趣味</th>
<td><?php print htmlspecialchars( implode( '、',$_POST[ 'hobbies' ]) , ENT_QUOTES ); ?></td>
</tr>
<tr>
<th>自己紹介</th>
<td><?php print nl2br( htmlspecialchars( $_POST[ 'question' ], ENT_QUOTES ) ); ?></td>
</tr>
</table>
</body>
</html>

その他memo

implode関数
PHPでcheckbox内の値の受け渡しを行う際に用いる
nl2br関数
改行文字の前にHTMLの改行タグを挿入 : 詳細はこちら