お問い合わせフォームは、氏名、メールアドレス、住所、問い合わせ内容を扱います。デザインだけでなく、認証情報と個人情報を守る運用が必要です。
最初は「認証情報を共有しない」「編集前にコピーを取る」「公開後も受信を確認する」の3つから始めましょう。環境変数やGitの説明は、それらを使う制作担当者向けの補足です。
Gmailの認証情報を保管する
form/php/config/config.php
には、Gmailのアプリパスワードを設定します。このファイルを公開リポジトリ、チャット、メール、画面共有へ載せないでください。
次の情報も秘密として扱います。
- Gmailの通常パスワード
- アプリパスワード
- バックアップコード
- サーバーのFTP・SSHパスワード
- 管理画面のログイン情報
漏えいした可能性がある場合
- Googleアカウントのアプリパスワード画面を開く。
- 該当するアプリパスワードを削除する。
- 新しいアプリパスワードを発行する。
config.phpを新しい値へ更新する。- 不審な送信履歴やログイン履歴を確認する。
- Gitなどの履歴に残っている場合は、管理者へ相談して履歴からも除去する。
ファイルから文字を消しただけでは、Gitの過去履歴や古いバックアップに残る場合があります。
config.php の最低限の保護
- 不要な人へ編集権限を渡さない
- 公開Gitリポジトリへ登録しない
- 本物のパスワード入りコピーを同じ公開フォルダへ増やさない
- 拡張子を
.txtや.bakに変えて保存しない - サーバーがPHPを実行できない状態で公開しない
Gitを使う場合の .gitignore 例:
form/php/config/config.php
*.log
.env
ただし、すでにGitへ登録済みのファイルは、.gitignore
を追加するだけでは履歴から消えません。
より安全な設定方法
本番運用では、パスワードをWeb公開フォルダ内のPHPへ直接書くより、環境変数や公開範囲外の設定ファイルから読み込む方法が安全です。
イメージ:
'password' => getenv('MAIL_APP_PASSWORD'),
ただし、環境変数の登録方法はレンタルサーバーによって異なります。よく分からない状態で変更するとメールが止まるため、サーバー会社の説明を確認するか、管理者へ依頼してください。
HTTPSを使用する
HTTPのままでは、利用者とサーバー間の入力内容を安全に送れません。本番サイトではHTTPSを使用します。
確認するURL:
https://example.com/contact/
ブラウザに証明書エラーが出る場合は、警告を無視せず、SSL証明書の設定を直してください。
入力値の安全な扱い
確認画面では、入力値を
htmlspecialchars
で変換して表示しています。これは、入力欄にHTMLやJavaScriptを書かれても、コードとして実行されにくくするためです。
htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
入力内容を、そのまま画面へ出す変更は避けます。次のようなコードは使用しません。
echo $_POST['contents'];
入力値をそのまま echo しないでください。
CSRFトークンを削除しない
確認画面から送信画面へ進むとき、CSRFトークンで正規の操作か確認しています。
<input type="hidden" name="csrf_token" value="...">
csrf_token
の生成、hidden入力、検証のどれかを削除すると、不正な外部送信を受けやすくなります。
本番でエラー詳細を見せない
PHPの詳しいエラーには、サーバーのパスや内部構造が含まれることがあります。
開発中:
ini_set('display_errors', 1);
本番ではサーバー設定に合わせて、画面表示を無効にし、ログへ記録します。
ini_set('display_errors', 0);
ini_set('log_errors', 1);
レンタルサーバーの管理画面にPHP設定がある場合は、そちらを優先してください。
個人情報をログへ残しすぎない
デバッグのために、次を丸ごとログ出力しないでください。
var_dump($_POST);
print_r($_POST);
どうしても確認する場合は、ローカル環境だけで架空のデータを使い、確認後にコードを削除します。
外部サービス
このフォームは次の外部サービスを利用します。
- Gmail SMTP:メール送信
使用する見本や項目によって、Flatpickr CDN(日時選択)、郵便番号API(住所自動入力)、Google Fonts(書体)も利用します。用途別の日付・時刻欄はブラウザー標準の入力欄です。
外部サービスが停止すると、一部機能が使えない場合があります。利用規約や仕様変更を定期的に確認してください。
PHPMailerとPHPを更新する
古いライブラリを長期間放置すると、既知の問題が修正されないままになります。
更新前に必ずバックアップを作り、テスト環境で次を確認します。
- Gmailへ接続できる
- 管理者メールが届く
- 自動返信が届く
- 日本語が文字化けしない
- エラーログが増えていない
本番環境でいきなり更新しないでください。
バックアップ対象
通常のバックアップ:
index-contact.php など、実際に使っている入力PHP
form/
PHPMailer/
追加したサイトのCSS・画像・JavaScript
認証情報を含む
config.php
は、通常の共有バックアップとは分けて暗号化保管するか、パスワード管理ツールで設定値を管理してください。
おすすめのバックアップタイミング
- 公開前
- フォーム項目を変更する前
- CSSを大きく変更する前
- Gmail設定を変更する前
- PHPやPHPMailerを更新する前
- 正常動作を確認した直後
バックアップ名の例
contact_2026-09-22_before-field-change.zip
contact_2026-09-22_release.zip
日付と目的を入れると、どの状態へ戻せばよいか分かりやすくなります。
復元テスト
バックアップは、作っただけでは十分ではありません。
- 本番とは別のテスト用フォルダへ復元する。
- CSSとJavaScriptが表示されるか確認する。
- 確認画面まで進む。
- テスト用メール設定で送信する。
- PHPエラーログを確認する。
本番データを上書きせず、必ず別の場所で試してください。
定期確認
月1回程度:
- テスト送信
- 迷惑メール判定
- PHPエラーログ
- Googleアカウントのセキュリティ通知
数か月ごと:
- 不要なアプリパスワードの削除
- PHP・PHPMailerの更新状況
- バックアップからの復元確認
- 管理者メールアドレスの見直し
担当者が変わった場合は、古い担当者のアクセス権と認証情報を必ず見直してください。