PHPでお問い合わせフォームを作る　その２　テンプレートを使ってみる

#PHPでテンプレートを使ってみよう
[前回の記事](https://qiita.com/hotate_chan/items/b8ac6b270eac50b0b8e2)で、最低限のコードでお問い合わせフォームを作ってみました。

+ 1　入力画面　データを入力させる
* 2　確認画面　データを受け取り、受け取ったデータを表示する
- 3　完了画面　メールを送信して、ありがとうメッセージを表示する


という流れでした。
データの引き渡しをやってみた、というところです。

で、今回は前回の記事に書いていた__やっておいた方が良い事__のうち、テンプレートの使用をやってみたいと思います。

#前提
今回もフレームワークは使いません。
なので、厳密な意味でのテンプレートエンジンは使用しません。
PHPファイルとhtmlを書いたファイルを分離することを目的とします。
では、作っていきます。

##構成
```
index.html       // 入力画面です
confirm.php      // index.htmlで入力されたデータを受け取ります
confirm.html     // confirm.phpで受け取ったデータを表示します
complete.php     // confirm.htmlからデータを受け取りメール送信します
complete.html    // メール送信後、ありがとうメッセージを表示します
```

いや〜簡単な構成ですね・・・・　では次から各ファイルを見ていきます。


##作ってみる

###index.html
```html:index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>phpでフォーム送信</title>
</head>
<body>
<form action="./confirm.php" method="post">
    <div id="contents">
        <div id="name">
          お名前　<input type="text" name="name">
        </div>
        <div id="mail">
          メールアドレス　<input type="text" name="mail">
        </div>
        <div id="toiawase">
          お問い合わせ内容　<textarea name="toiawase"></textarea>
        </div>
        </br>
        </br>
        <input type="submit" value="確認">
    </div>
</form>
</body>
</html>
```

はい、このファイルは前回から変更ありません。
~~味気のない入力フォームです。~~

###confirm.php
```php:confirm.php
<?php

    $name = $_POST['name'];
    $mail = $_POST['mail'];
    $toiawase = $_POST['toiawase'];

    // confirm.html 読み込み
    $htmlString = file_get_contents("./confirm.html");

    // html内の変換文字列を使ってconfirm.html内の文字列を変換
    $printHtml = str_replace("****replace_onamae****", $name, $htmlString);  // 名前の変換
    $printHtml = str_replace("****replace_mailaddress****", $mail, $printHtml);  // メールアドレスの変換
    $printHtml = str_replace("****replace_toiawase****", $toiawase, $printHtml);  // メールアドレスの変換

    echo $printHtml;
```

あれ、htmlの記述がなくなってる。

```php:confirm.php
<?php
　　〜　略　〜
    // confirm.html 読み込み
    $htmlString = file_get_contents("./confirm.html");
```
file_get_contents 使って confirm.html を読み込むようにしてます。
そして、読み込んだhtml内の変換用の文字列を使って、取得した名前・メールアドレス・問い合わせ内容を書き換えてます。

では、confirm.htmlはどうなっているかというと


###confirm.html
```html:confirm.html
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<title>Insert title here</title>
</head>
<body>
お名前：****replace_onamae****
</br>
メールアドレス：****replace_mailaddress****
</br>
お問い合わせ内容
</br>
****replace_toiawase****
</br>
</br>
<form action='./complete.php' method='post'>
<input type='hidden' name='name' value='****replace_onamae****'>
<input type='hidden' name='mail' value='****replace_mailaddress****'>
<input type='hidden' name='toiawase' value='****replace_toiawase****'>
<input type='button' onclick='history.back()' value='戻る'>
<input type='submit' value='確認'>
</form>
</body>
</html>
```

めっちゃ無理やりやな・・・・
confirm.php で confirm.html を読み込んで、html内の \*\*\*\*replace_onamae**** をconfirm.php で取得した**名前**に変換しとるんやね。
同じやり方で　\*\*\*\*replace_mailaddress**** を**メールアドレス**に
\*\*\*\*replace_toiawase**** を**お問い合わせ内容**に

このやり方だったらフレームワークもテンプレートエンジンも使わずに**素**のPHPでPHPファイルとhtmlファイルを~~強引に~~分けることができる。
あとは同じやり方でcomplete.php と complete.html も作りましょう


###complete.php
```php:complete.php
<?php

    $name = $_POST['name'];
    $mail = $_POST['mail'];

    $toiawase = $_POST['toiawase'];

    $mailHeader = "From: from@from.com";
    $mailSubject = "お問い合わせありがとうございます";
    $mailBody = $name . "様 お問い合わせありがとうございます";
    $mailBody .= "¥n";
    $mailBody .= "ご返信まで～～～～";

    mail($mail, $mailSubject, $mailBody, $mailHeader);

    $printHtml = file_get_contents("./complete.html");
    $echoHtml = str_replace("****replace_onamae****", $name, $printHtml);

    echo $echoHtml;
```

###complete.html
```html:complete.html
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<title>Insert title here</title>
</head>
<body>
****replace_onamae****さん、お問い合わせありがとうございます。
</body>
</html>
```

#終わりに
はい、これで前回作った機能を無くすことなく、PHPファイルとhtmlファイルを分けることが出来るようになりました。
無理やり感があるけれど、今後フレームワークを使ったりしていくので今のところはこんな感じで・・・

さて次は入力チェック系やってみましょう。