reCaptcha認証が通らない場合の動作検証(エラー画面の表示確認)

reCaptchaをフォームなどに実装すると正常な場合の動作検証は可能ですが
認証を通らない場合の動作検証はなかなか難しかったりします。

reCaptcha認証が通らない場合にエラー画面が正しく表示されるかを検証するには、以下の手順を実施します。

無効なトークンをシミュレートすることで、認証失敗時の動作をテストします。

フォーム内に以下のタグを設置します。

<input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response" value="invalid-token">

reCaptchaのVer.2の場合、ロボット認証をチェックするとvalue部分が正常なトークン値に書き換えられてしまうので、ブラウザのデベロッパーツールなどで適当な値に書き直します。

送信をして、エラー画面が表示されれば動作検証完了です。

reCaptchaの実装方法は以下の記事にも書いていますが、
https://www.uki213.com/memo/google-form-static-html-recaptcha/
Googleフォームへの送信とエラー画面の表示を切り分けるPHPは以下のような記述となります。

<?php
  $recaptcha_secret_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
  $response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secret_key."&response=".$_POST['g-recaptcha-response']);
  $response = json_decode($response, true);
  if ($response["success"] === true) {
    // reCAPTCHA認証が成功した場合、Googleフォームに値を送信する処理をここに記述
$redirect_url = 'https://docs.google.com/forms/u/0/d/e/zzzzzzzzzzzzzzzzzzzzzzzzzzzz/formResponse';
    //307 (Temporary Redirect)でリダイレクトして通常のフォーム投稿の処理
    header('Location: '.$redirect_url, true, 307);
  } else {
    // reCAPTCHA認証が失敗した場合、エラーメッセージを表示する処理をここに記述
    $error_url = 'https://sample.jp/test/error.html';
    header('Location: '.$error_url, true, 307);
  }
?>

関連記事

コメントを残す

*