
フォームからのスパムが多く、自分でGoogle reCAPTCHAを設定してみようとサイトを参考にして、以下を</form>タグの後に記述しました。
ところがスパムの数は減らずGoogle cloudには「過去6週間にトークンをリクエストしていません」と出ます。
これは設定方法に問題があるという事だと思います。
<script src="https://www.google.com/recaptcha/api.js?render=6 …
<script>
var rc_form = document.getElementById('rc_form');
//フォーム要素にイベントハンドラを設定
rc_form.onsubmit = function(event) {
//デフォルトの動作(送信)を停止
event.preventDefault();
//トークンを取得
grecaptcha.ready(function() {
grecaptcha.execute('6LcdYmYkAAAAALxCMuxsHdGOXGidatwn27uI5R-o', {action: 'login'}).then(function(token) {
var token_input = document.createElement('input'); //input 要素を生成
token_input.type = 'hidden';
token_input.name = 'g-recaptcha-response';
token_input.value = token; //トークンを値に設定
rc_form.appendChild(token_input);
var action_input = document.createElement('input'); //input 要素を生成
action_input.type = 'hidden';
action_input.name = 'action';
action_input.value = 'login'; //アクション名を値に設定
rc_form.appendChild(action_input);
rc_form.submit(); //フォームを送信
});
});
}
</script>
どこに問題があるか、ご指導頂けないでしょうか?
ドメインの設定は大丈夫だと思われます。サイトに「Google reCAPTCHAで保護されています」のマークも付いています。
No.1ベストアンサー
- 回答日時:
問題がある可能性がある箇所を以下に示します。
reCAPTCHAのサイトキーが正しく設定されているかどうか確認してください。設定したサイトキーが間違っているとトークンが生成されません。設定したサイトキーが正しいかどうかは、Google reCAPTCHAのダッシュボードで確認できます。
JavaScriptコードの中にある{action: 'login'}のloginの部分を、フォームを保護したいページのURLに変更する必要があります。このアクション名をフォームを保護したいページのURLに合わせて変更しないと、トークンが正常に生成されません。
フォームのIDがrc_formであることを確認してください。もしIDが異なる場合、JavaScriptコードの中のgetElementByIdの引数も変更する必要があります。
以上の点を確認し、設定を見直してみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<tr>指定した表の行要素をボ...
-
その要素がjQueryでremove()済...
-
初心者です。gulpでコンパイル...
-
スマホ上で、左右スワイプで次...
-
jQueryで同じクラス名のものを...
-
<div>のタッチ状態を維持したま...
-
jQueryでシンセサイザーを作っ...
-
Colorboxがうまく設置できません
-
フォームが空欄の時にフォーム...
-
イラストレーター、縦中横のシ...
-
タグを教えてください。
-
ラジオボタンを複数選択したと...
-
jsで質問です。 formをsubmitし...
-
2025年相性がいい人のサイトの...
-
CookieをWebStoeageに変える
-
Adobe acrobat proでフォームを...
-
Outlookのアカウントがあるとメ...
-
jqueryのselect2で検索欄の文字...
-
食材の期限を管理するためにGAS...
-
ビデオのJSについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jsonテキストデータの並び替え...
-
スマホ上で、左右スワイプで次...
-
viewport幅
-
ラジオボタンを複数選択したと...
-
<tr>指定した表の行要素をボ...
-
ボタンを押したあとに画像を表...
-
画面遷移を行わずに同一ページ...
-
イラストレーター、縦中横のシ...
-
GASでチェックボックスを一括of...
-
jqueryのselect2で検索欄の文字...
-
初心者です。gulpでコンパイル...
-
階層別の組織図の自動作成について
-
セレクトを全て選択されていな...
-
セレクトボックスで配列を呼び...
-
タグを教えてください。
-
jsで質問です。 formをsubmitし...
-
Adobe acrobat proでフォームを...
-
任意の変数が任意の値になった...
-
jsで質問です。 ボタンが二つ存...
-
2段階プルダウンで1段階目の選...
おすすめ情報
ありがとうございます!
サイトキーは確認しました。
login部分を変更とは
//トークンを取得
grecaptcha.ready(function() {
grecaptcha.execute('6LcdYmYkAAAAALxCMuxsHdGOXGidatwn27uI5R-o', {action: 'https://⚫︎⚫︎⚫︎⚫︎/'}).then(function(token) {
var token_input = document.createElement('input');
この部分だけで宜しかったでしょうか?
また、保護したいフォームのタグは
<form method="post" action="mail.php" class="form-horizontal">
この様になっていて、idが付いていないように思います。
id=“rc_form” など加筆すれば大丈夫ですか?
どうぞ宜しくお願いします。
少し見直しておりまして、、
最後の方にある
action_input.type = 'hidden';
action_input.name = 'action';
action_input.value = 'login';
↑こちらの'login'も、サイトURLに変更する必要があると言うことでしょうか?
理解が遅くて大変申し訳ありません。