今回、phpを使ってメールフォームを作成しました。
手順は、以下の通りです。
- 入力フォームをつくる(index.html)
- 確認画面をつくる(check.php)
- 送信画面をつくる(send.php)

ファイルの保存場所について
以下、MacOS MAMPの場合ですが
MAMP>htdocs 以下のフォルダに保存すること
内容を確認するときはブラウザでlocalhost:8888/xxxをたたく
(xxxは自分が作ったフォルダの名前に変えてパスを正しく指定!)
自分のような初学者の方は、お気をつけてくださいー
1.入力フォームをつくる(index.html)
フォームに入力された値をcheck.phpに渡します。

入力欄は「ニックネーム」「メールアドレス」「感想」の3つにしました
この入力してもらうページ(=index.html)のポイントは、
formタグとinputタグの属性でした
formタグの指定
<form action="check.php" method="POST">
この中に入力用のテキストボックスを3つ作る
</form>
action="check.php"
action:フォームに入力された値を渡す先を指定
method="POST"
method:データを送信する方法の指定
送り方にはGETとPOSTがある
GETはURLに付加してデータを送るので、内容が丸見え
個人情報などを含む場合はPOSTで送ろう
inputタグの指定
<input type="text" name="nickname">
name属性の値が重要。
入力された値の「ラベル」みたいなもの。
→ name属性値”nickname”が付いたテキストボックスに入力された値
ほかのものと被らないように注意
2.確認画面をつくる(check.php)
いよいよphpです。
以下、やりたいことリスト
- POSTで渡された値を変数に格納しておく
- 渡された値がちゃんと入力されていなかったら、
もう一度前画面に戻って入力してもらう - すべての項目が入力されたら送信する
2-1.POSTで渡された値を変数に格納する

check.phpにhtmlのDOCTYPE宣言など諸々書いてから、
<body>内に以下のコードを記述
<?php $nickname=$_POST['nickname']; $email=$_POST['email'];
$hitokoto=$_POST['hitokoto']; ?>
$nicknameは、変数名(nicknameじゃなくてもOK)
$_POST[‘nickname’]は、POSTで送られたname属性値がnicknameの値
$nicknameに$_POST[‘nickname’]を代入している(変数に格納した)
変数名とname属性の値は、同じにしなくても動くけど、
同じだと、変数になにが入っているのかわかりやすい
確認|ちゃんと変数に値を代入できているか出力して確認してみる
phpで出力したいときの書き方ecoh $変数名;
ecoh 'おはよう';
文字列は”(シングルクオート)で括る
さっきのコードにechoを追加してみると
<?php
$nickname=$_POST['nickname'];
$email=$_POST['email'];$hitokoto=$_POST['hitokoto'];
ecoh $nickname;
ecoh $email;
echo $hitokoto;
?>
index.htmlで入力された値を、check.phpで受け取り出力した!わーい

しかし横一列になってしまう…
そういうときは、<br>タグも一緒にechoして出力しよう
(htmlのタグもechoできる!便利!)
だがしかし、便利なだけではなく以下のようなことも可能ということ

ニックネームを<h1>で括って入力すると、めちゃ主張してくる…
悪意のあるプログラムが投げ込まれたら、THE ENDです
なので、さきほどのコードにすこし書き加えて、エスケープ処理をします
<?php
$nickname = htmlspecialchars($_POST['nickname']);
$email = htmlspecialchars($_POST['email']);$hitokoto = htmlspecialchars($_POST['hitokoto']);
echo $nickname;
echo $email;
echo $hitokoto;
?>
変数に代入する値(=index.htmlで入力された値)にhtmlspecialchars(値)
というのを追加しました
htmlで特別な意味を持つ記号(“<“とか”>”とか…)を普通の文字列として扱うという処理のようです
次は、
渡された値がちゃんと入力されていなかったら、
もう一度前画面に戻って入力してもらう
という条件分岐による処理です
つづきは、また今度