SSブログ

「PHP」でアンケートページ作成。 [PHP]

「PHP」でアンケートページ作成。

「PHP」で動くHTMLを作る。

 27日、28日の記事と連動しています。  これまでに「PHP」や「MariaDB」や「phpmyadmin」や「apache」をインストールしたのですからこれらを利用してHTMLを作成してみます。
 といっても、ほぼ書籍の内容なのですが。ありがとうございました。
 下記のファイル「index.html」「check.php」「thanks.php」をとりあえず「/var/www/html/php」に置いてみます。
 パーミッションは「755」にしてみました。

アンケートの index ページ。(index.html)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>アンケートの入力</title>
</head>
<body>

<form method="post" action="check.php"> ←『form』は入力・送信フォームを作成する際に使用。『method』は送信の際の転送方法。『post』は一般的なフォームで使用される。(長文など)『action』は送信先プログラムのURIを指定。つまり入力したデータをcheck.phpに送信する。
ニックネームを入力してください。<br>
<input name="nickname" type="text" style="width:100px"><br> ←『input name』インプットタグのname属性。入力されたデータが送信される際に、名付けたデータ名(ここではnickname)とその値を一組にしてaction属性で指定したURIにmethod属性で指定した方法(post)で送信される。
メールアドレスを入力してください。<br>
<input name="email" type="text" style="width:200px"><br>
ご意見を一言でお聞かせください。<br>
<input name="goiken" type="text" style="width:300px"><br>
<br>
<input type="submit" value="送信">
</form>
</body>
</html>

アンケートのチェックページ。(check.php)

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>アンケートのチェック</title>
6 </head>
7 <body>
8
9 <?php ←『<?php』 と 『?>』の間にコードを記述する。
10 $nickname=$_POST['nickname']; ←『$nickname』このPHPプログラムで使用する変数。『$』を付ける。中身は右辺の『$_POST['nickname']』。←これは HTTP POST メソッドから現在のスクリプトに渡された変数の連想配列。今回はHTMLファイル(index.html)中の『<input name="nickname"~』の値が代入される。
11 $email=$_POST['email']; ←『;』PHPの行の最後に付ける。
12 $goiken=$_POST['goiken']; ←つまりここまででHTMLファイルから値を三つ受け取り、それぞれ変数に代入している。
下記のように変数はたびたび利用されるようなので最初に設定記述するのが良いかも知れない。

13 ←空行は見やすくするため。
14 $nickname=htmlspecialchars($nickname); ←『htmlspecialchars』関数。HTML の表現形式に変換しその文字列を返す。ここでは利用者が入力したテキストの中にタグなどが混入された場合それを無害化する。つまりクロスサイトスクリプティングをサニタイジングするということ。
15 $email=htmlspecialchars($email);
16 $goiken=htmlspecialchars($goiken);
17
18 if($nickname=='') ←IF文。『==』イコールが二連結で『同じなら』という意味。『''(シングルクォート二つ)』で『空欄』という意味。つまり変数$nicknameに値が入力されていなければ。ということ。
19 { ←『{ }』の間の処理が↑の条件に合えば行われ↓が表示されることになる。
20 print 'ニックネームが入力されていません。<br>'; ←『'』シングルクォートに挟まれると文字列に。
21 }
22 else ←↑の条件に『合わなければ』↓の処理が行われ表示されることになる。
23 {
24 print 'ようこそ';
25 print $nickname;
26 print '様';
27 print '<br>';
28 }
29
30 if($email=='')
31 {
32 print 'メールアドレスが入力されていません。<br>';
33 }
34 else
35 {
36 print 'メールアドレス';
37 print $email;
38 print '<br>';
39 }
40
41 if($goiken=='')
42 {
43 print 'ご意見が入力されていません。<br>';
44 }
45 else
46 {
47 print 'ご意見『';
48 print $goiken;
49 print '』<br>';
50 }
51
52 if($nickname=='' || $email=='' || $goiken=='') ←『||』は『もしくは』という意味。変数$nicknameが空、もしくは変数$emailが空、もしくは変数$goikenが空 ならば、↓の処理が実行される。
53 {
54 print '<form>';
55 print '<input type="button" onclick="history.back()" value="戻る">'; ←JavaScript言語、入力し直しの仕組みに。HTMLだと入力した値(今回はテキスト)がページを「戻る」などの移動を行うことで消去してしまうが、JavaScriptならそれを保持して戻ることができるので、再入力の手間が省ける。つまり入力が一つでも行われていない場合は戻るリンクが出現し、再入力を促すということ。
56 print '</form>';
57 }
58 else ←入力が行われていた場合の処理。
59 {
60 print '<form method="post" action="thanks.php">'; ←送信先はthanks.php
61 print '<input name="nickname" type="hidden" value="'.$nickname.'">'; ←『hidden』はブラウザ上に表示されない非表示データを送り先の『$_POST=[''];』に渡すことができる。
『$_POST=[''];』これは本来『form』(index.html)タグ内の入力データ(inputタグ)を受け取るものだが、check.phpファイルには入力画面がない。しかしindex.htmlから送られてきた『nickname(名前と値)』を変数『$nickname』に代入してあるので、これを『value』に代入してやることで『nickname』になり『hidden』として送信先に渡すことができる。

62 print '<input name="email" type="hidden" value="'.$email.'">'; ←『. .』変数の値を連結する。
63 print '<input name="goiken" type="hidden" value="'.$goiken.'">';
64 print '<input type="button" onclick="history.back()" value="戻る">';
65 print '<input type="submit" value="OK">'; ←『submin』送信ボタンを作成。
66 print '</form>';
67 }
68 ?> ←「PHP」プログラム終了。
69 </body>
70 </html>

アンケートのサンクスページ。(thanks.php)

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>アンケートのサンクス</title>
</head>
<body>
<?php
$nickname=$_POST['nickname'];
$email=$_POST['email'];
$goiken=$_POST['goiken'];
$nickname=htmlspecialchars($nickname);
$email=htmlspecialchars($email);
$goiken=htmlspecialchars($goiken);
print $nickname;
print '様<br>';
print 'ご意見ありがとうございました。<br>';
print 'いただいたご意見';
print $goiken;
print '<br>';
print $email;
print 'にメールを送りましたのでご確認ください。';
$mail_sub='アンケート受け付けました。'; ←メールタイトル。
$mail_body=$nickname."様への\nアンケートご協力ありがとうございました。"; ←メール本文。ダブルクォーテーションは「\n」を改行として機能させるため。
$mail_body=html_entity_decode($mail_body,ENT_QUOTES,"UTF-8");
$mail_head='From:xxx@xxx.co.jp'; ← ヘッダー情報。自分のメールアドレス。
mb_language('Japanese');
mb_internal_encoding("UTF-8");
mb_send_mail($email,$mail_sub,$mail_body,$mail_head) ←メールを送信する命令。

※メールは実機ではないので出ない状態。

?>
</body>
</html>


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。