新しいブログに移動しました。
9ensanのLifeHack
こちらの記事も必要に応じて新しいブログに移動させる予定です。
今後ともよろしくお願い致します。

HOME > PHP > 

PHP応用 コンタクトフォームの作成

PHP応用 コンタクトフォームの作成

  • 2009.02.19 (木) 10:38
  • PHP

コンタクトフォームを作成しましょう。

まずは、このような「デモ:コンタクトフォーム」を作ります。

デモで動作を確認してみてください。

画面遷移は以下のようになります。

コンタクトフォームの画面遷移

よくあるコンタクトフォームです。

  1. まず、入力画面を表示しコンタクト内容を入力してもらいます。
  2.  入力が終了したら確認画面に遷移し入力内容の確認をできるようにします。
    ここで、入力内容に誤りがあった場合は、入力画面に戻って修正してもらいます。
  3. 入力内容に誤りがない場合、入力内容を投稿してもらい完了ページを表示し、コンタクト投稿したことを表示します。

一連のプログラムの流れはこんな感じで作成したいと思います。

まずは、入力ページの作成です。

 入力画面

こんなページを作ります。

ソース:input.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
	$contactname = $_POST["contactname"];
	$contactmail = $_POST["contactmail"];
	$contents    = $_POST["contents"];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="ja">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>コンタクトフォーム</title>
	<style TYPE="text/css">
	<!--
		H1 {
			color: red;
			font-size: 18pt;
		}
		#contact-form th {
			background-color: #9bdbea;
			padding: 10px 20px;
		}
		#contact-form td {
			background-color: #f7f7ef;
			padding: 10px 20px;
		}
		#contact-form td input {
			width: 400px;
		}
		#contact-form td textarea {
			width: 400px;
		}
	-->
	</style>
</head>
<body>
<h1>コンタクトフォーム</h1>
<form action="./confirm.php" method="post">
	<table id="contact-form" border="1" cellpadding="0" cellspacing="0">
		<tr>
			<th>
				名前
			</th>
			<td>
				<input type="text" name="contactname" value="<?= $contactname ?>" />
			</td>
		</tr>
		<tr>
			<th>
				メールアドレス
			</th>
			<td>
				<input type="text" name="contactmail" value="<?= $contactmail ?>" />
			</td>
		</tr>
		<tr>
			<th>
				内容
			</th>
			<td>
				<textarea name="contents" rows="10"><?= $contents ?></textarea>
			</td>
		</tr>
		<tr>
			<th colspan="2">
				<input type="submit" value="入力">
			</th>
		</tr>
	</table>
</form>
</body>
</html>

formタグを使用して次のページにデータを送信できるようにします。

次に、確認画面を作成しましょう。

確認画面

内容に誤りがあったら内容修正ボタンで入力画面に戻ります。

ソース:confirm.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
	$contactname = $_POST["contactname"];
	$contactmail = $_POST["contactmail"];
	$contents    = $_POST["contents"];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="ja">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>コンタクトフォーム</title>
	<style TYPE="text/css">
	<!--
		H1 {
			color: red;
			font-size: 18pt;
		}
		#contact-form th {
			background-color: #9bdbea;
			padding: 10px 20px;
		}
		#contact-form td {
			background-color: #f7f7ef;
			padding: 10px 20px;
		}
		#contact-form td input {
			width: 400px;
		}
		#contact-form td textarea {
			width: 400px;
		}
		form {
			display: inline;
		}
	-->
	</style>
</head>
<body>
<h1>コンタクトフォーム</h1>
<table id="contact-form" border="1" cellpadding="0" cellspacing="0">
	<tr>
		<th>
			名前
		</th>
		<td>
			<?= $contactname ?>
		</td>
	</tr>
	<tr>
		<th>
			メールアドレス
		</th>
		<td>
			<?= $contactmail ?>
		</td>
	</tr>
	<tr>
		<th>
			内容
		</th>
		<td>
			<?= $contents ?>
		</td>
	</tr>
	<tr>
		<th colspan="2">
			<form action="./end.php" method="post">
				<input type="hidden" name="contactname" value="<?= $contactname ?>">
				<input type="hidden" name="contactmail" value="<?= $contactmail ?>">
				<input type="hidden" name="contents" value="<?= $contents ?>">
				<input type="submit" value="送信" />
			</form>
			<form action="./input.php" method="post">
				<input type="hidden" name="contactname" value="<?= $contactname ?>">
				<input type="hidden" name="contactmail" value="<?= $contactmail ?>">
				<input type="hidden" name="contents" value="<?= $contents ?>">
				<input type="submit" value="内容修正" />
			</form>
		</th>
	</tr>
</table>
</body>
</html>

ここでは、<input type="hidden">タグを使って前の画面、次の画面へ渡すデータを保持します。

また、前画面からのデータはPOSTメソッドにて送信したので、$_POST配列に格納されます。
なので、$_POST変数を使用して前のページからの送信データを取得します。

 最後に送信画面です。

完了画面

この画面では前の画面からのデータを取得してメールにて内容を送信します。

PHPでのメールの送信もしています。

ソース:end.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
	$contactname = $_POST["contactname"];
	$contactmail = $_POST["contactmail"];
	$contents    = $_POST["contents"];
	//メール送信処理
	mb_language('ja');
	$from = mb_encode_mimeheader($contactname)."<".$contactmail.">";
	$reply_to = $from;
	$to = 'ここは各自のメールアドレスを設定してください';
	$header = "From: $from\n";
	$header .= "Reply-To: $reply_to\n";
	$header .= "X-Mailer: myphpMail ". phpversion(). "\n";
	$subject = "【PHP応用 コンタクトフォームの作成】";
	$message = $contents;
	mb_send_mail($to, $subject, $message, $header);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="ja">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>コンタクトフォーム</title>
	<style TYPE="text/css">
	<!--
		H1 {
			color: red;
			font-size: 18pt;
		}
		#contact-form th {
			background-color: #9bdbea;
			padding: 10px 20px;
		}
		#contact-form td {
			background-color: #f7f7ef;
			padding: 10px 20px;
		}
		#contact-form td input {
			width: 400px;
		}
		#contact-form td textarea {
			width: 400px;
		}
		form {
			display: inline;
		}
	-->
	</style>
</head>
<body>
<h1>コンタクトフォーム</h1>
<p>以下の内容で、送信しました。</p>
<table id="contact-form" border="1" cellpadding="0" cellspacing="0">
	<tr>
		<th>
			名前
		</th>
		<td>
			<?= $contactname ?>
		</td>
	</tr>
	<tr>
		<th>
			メールアドレス
		</th>
		<td>
			<?= $contactmail ?>
		</td>
	</tr>
	<tr>
		<th>
			内容
		</th>
		<td>
			<?= $contents ?>
		</td>
	</tr>
</table>
</body>
</html>

9行目のメールアドレスは、各自設定してください。

前ページから送られてきたデータをもとにmb_send_mail関数を使用してメールを送信します。

ローカル環境でテストしてみて

メール送信エラー

このようなエラーが出力された場合、メールサーバーが構築されていないことが理由です。

レンタルサーバーで確認するか、ローカル環境にメールサーバーを構築して確認してみてください。

簡易ですがこれでコンタクトフォームの出来上がりです。

 

コメント:0件

コメント投稿フォーム
コメントを入力して下さい。
ユーザー名(必須)
メールアドレス(必須)(非公開)
ホームページ
コメント

トラックバック:0件

この記事のトラックバックURL
http://blog.veryposi.info/programing/php/php-appli-contactform/trackback/
お薦めのレンタルサーバー
広告
お薦めの書籍
HOME > PHP > 

PHP応用 コンタクトフォームの作成