トラブルシュート

フォームの送信先が意図と違う問題をAI生成HTMLで防ぐプロンプト

AIにお問い合わせフォームのHTMLを生成してもらったら、action属性にサンプルのURLが入っていて、テスト送信したデータが全く関係のない外部サービスに飛んでしまった——こうした事故を防ぐためのプロンプトの書き方とレビューポイントを整理します。

よくある原因

AIはフォームHTMLの生成を依頼されると、特定のフォーム処理サービス(Formspree・Netlify Forms・Google Formsなど)のサンプルURLをaction属性に挿入することがあります。これらのURLはダミーIDを含む架空のエンドポイントのため、実際に送信するとデータは消えるか第三者のアカウントに届きます。プロンプトに「action属性にはPLACEHOLDERと明記し、使い方のコメントをHTMLに入れてください」と指示すると誤用を防げます。

AIが`method="get"`と`method="post"`を混同したコードを出力するケースもあります。お問い合わせ内容や個人情報を含むフォームにGETを指定すると、送信データがURLに載ってブラウザ履歴やサーバーログに残ります。プロンプトで「個人情報を扱うためmethodはPOSTにしてください」と明示することで防げます。

  • 相手がログインなしで開ける状態か確認する
  • PCとスマホで最低1回ずつ表示を確認する
  • 内部情報・個人情報・不要な外部送信が残っていないか見る
  • レビュー期限と修正時の差し替え方を決めておく

自分側で確認すること

AIが出力したHTMLのform要素を確認し、action属性の値・method属性の値・input要素のname属性が揃っているかを確認します。name属性が未設定のinput要素はフォーム送信時にデータとして含まれないため、サーバー側で受け取れません。AIが`name`属性を省略するケースは意外と多いです。

action属性に設定すべき自分の送信先URLをHTMLに書き込み、ローカルでテスト送信を実行してNetworkタブで確認します。このとき「PLACEHOLDER」「YOUR_URL」などのプレースホルダーが残っていないかを検索でチェックし、全て実際のURLに書き換えてから本番に公開します。

  • HTML内の外部script・form action・iframeを確認する
  • APIキーやトークンらしき文字列がないか検索する
  • 画像・CSS・JSのパスが公開後も解決できるか見る
  • noindexと認証を混同せず、必要なら両方設定する

相手側で確認すること

AIが生成したフォームHTMLを相手(クライアント等)に確認してもらう場合、「送信ボタンを押したあとに表示されるページのURLを教えてください」と依頼します。意図しないドメインのURLが返ってきた場合、action属性が正しく差し替えられていない証拠です。

相手がフォームを送信したが管理側でデータを受け取れていないと判断する方法として、自分のメールアドレスでテスト送信してもらいます。10分待っても管理メールが届かない場合は送信失敗の可能性が高く、action URLを確認するよう伝えます。

  • HTML内の外部script・form action・iframeを確認する
  • APIキーやトークンらしき文字列がないか検索する
  • 画像・CSS・JSのパスが公開後も解決できるか見る
  • noindexと認証を混同せず、必要なら両方設定する

再発防止の運用

AIへのプロンプトテンプレートを整備します。「お問い合わせフォームのHTMLを作成してください。フォームのaction属性は<!-- ここに送信先URLを入れる -->というHTMLコメントにしてください。methodはPOST、各inputにはname属性を必ず設定し、個人情報(名前・メール・本文)の3項目を含めてください」という形式が使いやすいです。

生成されたHTMLを本番公開する前に、自分のテスト用メールアドレスや開発用エンドポイントに向けてaction属性を設定し、実際にテスト送信してデータが届くことを確認します。この工程を必須にすることで、action未設定・プレースホルダーのまま公開というミスをゼロにできます。

  • HTML内の外部script・form action・iframeを確認する
  • APIキーやトークンらしき文字列がないか検索する
  • 画像・CSS・JSのパスが公開後も解決できるか見る
  • noindexと認証を混同せず、必要なら両方設定する

よくある質問

AIにフォームを生成させるとき、どのフォーム処理サービスを使うか伝えるべきですか?

はい、使うサービスを明示すると精度が上がります。例えば「Formspreeを使ってください。フォームIDはxxx_xxxです」と伝えると、正しいaction URLを生成してくれる可能性が高くなります。使うサービスが未定の場合はaction属性をプレースホルダーにするよう指示します。

AIが生成したフォームのinput要素にname属性がありません。影響はありますか?

name属性がないinput要素のデータはフォーム送信時に含まれません。つまりユーザーが入力した内容がサーバーに届きません。AIが生成したフォームは必ず全inputのname属性を確認し、送信先サーバーが期待するパラメータ名と一致しているか照合してください。

AIにGoogleフォームの埋め込みHTMLを生成させましたが、送信データがどこに届くかわかりません。

Googleフォームの埋め込みはGoogleが管理するエンドポイントに送信されます。送信データはGoogleドライブのスプレッドシートに記録されます。AIが生成したGoogleフォームの埋め込みコードが自分の所有するフォームのIDを指しているか、Googleフォームの編集画面で確認してください。

関連記事

トラブルシュート

フォームの送信先が意図と違うときの原因と直し方

HTMLフォームの送信先(action属性)が意図した宛先と異なる問題を修正したい方向け。AIが生成したHTML・自分で書いたHTMLを問わず、送信先を正しく設定・確認・テストする手順と、外部サービスへの誤送信を防ぐ方法を解説します。

5分で読める
「トラブルシュート」の記事をもっと見る →