フォームを作りたいときに一番便利なサービスはグーグルフォームだと思います。回答をcsvでダウンロード出来たり、GASを使えば自動返信機能も作れちゃう!なにより、作成がスマホからでも簡単!!他の人との共有も簡単です。
無料で使えるサービスの一番のデメリットは会社名が入ることだと思いますが、グーグルという誰でも知ってる会社であることは安心にも繋がると思います。
なので私はフォームが必要なときは、グーグルフォームばかり使っています。
WordPressの場合は、Contact Form 7というプラグインでフォームを作ることもありますが、断然グーグルフォームの方が簡単で高機能です。
ですが、今回はグーグルフォームを使いませんでした。いや、使えなかったのです。グーグルフォームを使えなかった経緯と、代わりにPHPを使って作ったコピペ可能なフォームをご紹介します。
グーグルフォームを普通に埋め込みたくない理由
グーグルフォームは簡単にホームページに埋め込むことが出来ます。ですが、今回はこの方法を使いたくありませんでした。理由は、オーダーが
とのことだったので、静的ページでサイト制作を行い、グーグルフォームを普通に埋め込むのはなんか違うなと思いました。グーグルフォームを普通に埋め込むとなんか軽い感じがしません?昔からある感じもしないし。
グーグルフォームのname属性がなくなっている!
どうにか、見た目はグーグルフォームでないように埋め込めないかと調べたところグーグルフォームのname属性をサイトに入れることで埋め込めるという記事がいくつか出てきました。
やったー!これだ!!と思ってその値を探しましたが、いくら探してもname属性は見当たりません。仕様が変わったみたいです。。。
他の方法も見つからず、グーグルフォームを埋め込むことを諦めました。
・・・・と思ったら!ありました!!仕様変更に対応した記事を後日発見!!今度試してみようと思います・・・笑
PHPで簡単にフォームを作る方法
Webサイトにお問い合わせフォームを設置したいけれど、「PHPって難しそう…」と思っていませんか?
実は、基本的なフォームであれば、コピペで簡単に作ることができます!
ここでは、HTMLでフォームを作成し、それをPHPで処理してメール送信する方法 をご紹介します。
「とにかく動くものを作りたい!」という方にも、「PHPを少し理解したい!」という方にも役立つ内容になっていますので、ぜひ試してみてください。
HTMLでフォームを作る
フォームを作りたい場所に以下をコピペしましょう。
<form class="mailForm" action="mail.php" method="post">
<p>お気軽にお問い合わせください。</p>
<dl>
<dt>お名前</dt>
<dd>
<input name="name" type="text" required="required" id="name">
</dd>
<dt>メールアドレス</dt>
<dd>
<input name="email" type="email" required="required" id="email">
</dd>
<dt>お問い合わせ内容</dt>
<dd>
<textarea name="content" required="required" id="content"></textarea>
</dd>
<input type="hidden" id="token" name="token" value="1234567" />
</dl>
<p id="submit_button_cover">
<input name="submit_buton" type="submit" id="submit_button" value="送信">
</p>
</form>
CSSはご自由にお願いします笑
PHPファイルを作る
先ほど作ったHTMLと同じ階層にmail.phpという名前のPHPファイルを設置します。
<?php
$request_param = $_POST;
$request_datetime = date("Y年m月d日 H時i分s秒");
$mailto = $request_param['email'];
$to = "お問い合わせを受信するメールアドレスを入力";
$subject = "お問い合わせ、ありがとうございます。";
$headers = "From: お問い合わせを受信するメールアドレスを入力";
$content = "";
$content .= $request_param['name']. "様\r\n";
$content .= "お問い合わせ、ありがとうございます。\r\n";
$content .= "=================================\r\n";
$content .= "お名前 " . htmlspecialchars($request_param['name'])."\r\n";
$content .= "メールアドレス " . htmlspecialchars($request_param['email'])."\r\n";
$content .= "お問い合わせ内容 " . htmlspecialchars($request_param['content'])."\r\n";
$content .= "お問い合わせ日時 " . $request_datetime."\r\n";
$content .= "=================================\r\n";
//管理者確認用メール
$subject2 = "お問い合わせがありました。";
$content2 = "";
$content2 .= "お問い合わせがありました。\r\n";
$content2 .= "=================================\r\n";
$content2 .= "お名前 " . htmlspecialchars($request_param['name'])."\r\n";
$content2 .= "メールアドレス " . htmlspecialchars($request_param['email'])."\r\n";
$content2 .= "お問い合わせ内容 " . htmlspecialchars($request_param['content'])."\r\n";
$content2 .= "お問い合わせ日時 " . $request_datetime."\r\n";
$content2 .= "================================="."\r\n";
mb_language("ja");
mb_internal_encoding("UTF-8");
//mail 送信
if($request_param['token'] === '1234567'){
if(mb_send_mail($to, $subject2, $content2, $headers)){
mb_send_mail($mailto,$subject,$content,$headers);
?>
<script>
window.location = "送信した後に表示されるページのURL";
</script>
<?php
} else {
header('Content-Type: text/html; charset=UTF-8');
echo "メールの送信に失敗しました";
};
} else {
echo "メールの送信に失敗しました(トークンエラー)";
}
?>
$mailfrom….のところを$headers….と変えることで送信元が正しく表示されるようになりました。理由はよくわかりません!!笑
PHPはコピペでどうにかやりくりしている私ですが、もっと理解して自由に書けたらいいなぁ〜勉強しようかな〜と思っているところです笑
コメント