トラブルシューティング

重要: reCAPTCHA API のバージョン 1.0 のサポートは終了しました。バージョン 2.0 にアップグレードしてください。詳細


reCAPTCHA を追加すべき場所がわからない

このアドバイスは、言語に関係なく、reCAPTCHA を統合するすべてのユーザーに適用されます。

まず、コード内の 2 つのホットスポットを特定する必要があります。これが reCAPTCHA の呼び出しを追加する場所です。

  • reCAPTCHA を表示する: 最初のホットスポットは、フォームを生成するコードです。これが簡単に(HTML で <form> タグを探す)見つけられて、フォームにキャプチャを表示できたことを願っています。

  • reCAPTCHA を確認する: 2 つ目のホットスポットは、ユーザーに問題を引き起こしているように見える部分です。フォームの送信を処理するコード、つまりユーザーが [submit] をクリックしたときに実行されるコードを特定する必要があります。このコードがどのように見えるかを一般化することは困難ですが、有用な手がかりがいくつかあります。

    • フォームにエラー メッセージが表示される可能性がある場合(必須項目が空白になっている場合など)は、エラー メッセージを生成するコードを確認してください。
    • フォームでデータベースに情報が含まれている場合は、SQL INSERT を実行するコードを探してください。
    • フォームからメールを送信する場合は、そのコードを検索してください。

    フォームにすでに確認があります

    フォームに検証ロジックがすでにある場合(つまり、通常行うアクションを実行するのではなく、メッセージを表示してユーザーの無効な入力を処理するなど)、作業は楽になります。そのような場合、外出先からほぼ無料で利用するコードを見つけられます。フォームにエラー メッセージを表示できる場合は、コード内のエラー メッセージのテキストを検索して閉じます。検証コードが見つかったら、その他のチェック(メールアドレスが空白、年齢が古すぎるなど)に加えて、check_answer 関数の呼び出しを追加する必要があります。

    フォームに検証がありません

    現在、フォームの検証ロジックがない場合([常に送信] が成功する場合)は、より厄介な問題があります。その場合、既存のフォーム処理コードがユーザーが送信したときに実行する処理の直前に、reCAPTCHA 検証コードを追加する必要があります。また、フォームを再表示して、ユーザーにキャプチャでもう一度試みてもらう方法も理解する必要があります。残念ながら、そのやり方については一概には言えません。これは、すでに使用しているコードの構造に完全に依存します。既存のコードが複雑すぎない場合は、reCAPTCHA デベロッパー フォーラムに投稿し、アドバイスを求めてみてください。(投稿する場合は、他の人が助けることができるように十分な情報を記載してください。単に「コードが機能しない」と言うだけでは、通常は良い結果が得られません)。

  • 機能していません!どうすればよいですか?

    なんらかの操作を行う前に、正しいキーを使用していることを確認してください。公開鍵と秘密鍵は入れ替えられていますか?秘密鍵をフォーム ハンドラに入れ、公開鍵をフォームに入れたことを忘れないでください。

    Mailhide はメインのフォームベースの reCAPTCHA とは異なるキーを使用します。

    フォームで POST メソッドを使用していることを確認するか、reCAPTCHA のフォーム ハンドラ変数を POST ではなく GET に変更します。

    reCAPTCHA が動作していたにもかかわらず、突然「内部エラーが発生しました」と表示された場合は、鍵の登録に使用した Google アカウントを最近削除しましたか?その場合は、有効なアカウントで新しい鍵を登録して、試します。

    reCAPTCHA に正しくない単語が入力されている

    人間が間違えてミスをするということは理解しています。reCAPTCHA では、高度なリスク分析エンジンを使用して、受信リクエストが人間によるものかどうかを判断します。ユーザーが人間であることを確信できる場合、Google は小さな間違いを許容します。

    いいえ、まったく違う単語です

    reCAPTCHA が入力を一切受け入れている場合、API サーバーで reCAPTCHA の回答を正しく検証していない可能性があります。つまり、(1)https://www.google.com/recaptcha/api/verify を正しく呼び出していない(または、PHP の recaptcha_check_answer などのプラグインを使用している場合は同等の関数を呼び出していない)、(2)Google のサーバーからのレスポンスに応じた適切なアクションを行っていない、のいずれかです。ユーザーが回答を正しく入力したかどうかを確認する方法については、reCAPTCHA のインストールに使用した手順(プラグイン経由かどうかにかかわらず)をご覧ください。

    ユーザーが 1 語のキャプチャをし始めている

    reCAPTCHA は、必ずしも 2 語で構成するとは限りません。人間とロボットを区別するためのテストです。人間である可能性が高い場合は、より簡単なキャプチャが表示されます(以下のサンプルを参照)。Google のシステムは、ソリューションだけではなく、解決前、解決中、解決後の reCAPTCHA に対するすべての取り組みに基づいて、テストに合格するか不合格になるかを判断します。

    キャプチャしやすい

    簡単なキャプチャのセキュリティについて関心をお持ちの場合は、次のブログをご覧ください。 http://developerssecurity.blogspot.com/2013/10/recaptcha-just-got-easier-but-only-if.html