よくある原因
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フォームの編集画面で確認してください。