従来の ASP で reCAPTCHA を使用する

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

reCAPTCHA ASP ガイドでは、ASP に CAPTCHA を簡単に配置する方法を確認できます。 bot による悪用を阻止できます。以下のコードは reCAPTCHA API をラップします。

API キーの登録を終えたら、従来の ASP サイトに reCAPTCHA を追加するには、 。

  <%
  recaptcha_challenge_field  = Request("recaptcha_challenge_field")
  recaptcha_response_field   = Request("recaptcha_response_field")
  recaptcha_public_key       = "your_public_key" ' your public key
  recaptcha_private_key      = "your_private_key" ' your private key

  ' returns the HTML for the widget
  function recaptcha_challenge_writer()
recaptcha_challenge_writer = _ "<script type=""text/javascript"">" & _ "var RecaptchaOptions = {" & _ " theme : 'red'," & _ " tabindex : 0" & _ "};" & _ "</script>" & _ "<script type=""text/javascript"" src=""http://www.google.com/recaptcha/api/challenge?k=" & recaptcha_public_key & """></script>" & _ "<noscript>" & _ "<iframe src=""http://www.google.com/recaptcha/api/noscript?k=" & recaptcha_public_key & """ frameborder=""1""></iframe><>" & _ "<textarea name=""recaptcha_challenge_field"" rows=""3"" cols=""40""></textarea>" & _ "<input type=""hidden"" name=""recaptcha_response_field""value=""manual_challenge"">" & _ "</noscript>" end function ' returns "" if correct, otherwise it returns the error response function recaptcha_confirm(rechallenge,reresponse)
Dim VarString VarString = _ "privatekey=" & recaptcha_private_key & _ "&remoteip=" & Request.ServerVariables("REMOTE_ADDR") & _ "&challenge=" & rechallenge & _ "&response=" & reresponse Dim objXmlHttp Set objXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP") objXmlHttp.open "POST", "https://www.google.com/recaptcha/api/verify", False objXmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" objXmlHttp.send VarString
Dim ResponseString ResponseString = split(objXmlHttp.responseText, vblf) Set objXmlHttp = Nothing if ResponseString(0) = "true" then 'They answered correctly recaptcha_confirm = "" else 'They answered incorrectly recaptcha_confirm = ResponseString(1) end if end function server_response = "" newCaptcha = True if (recaptcha_challenge_field <> "" or recaptcha_response_field <> "") then server_response = recaptcha_confirm(recaptcha_challenge_field, recaptcha_response_field) newCaptcha = False end if %>

ここでは、変数 server_responsenewCaptcha が変数 ページが読み込まれ、ページの状態を判断できます。

次の HTML をスケルトンとして使用できます。

  <html>
  <body>

  <% if server_response <> "" or newCaptcha then %>

    <% if newCaptcha = False then %>

      <!-- An error occurred -->
      Wrong!

    <% end if %>

    <!-- Generating the form -->
    <form action="recaptcha.asp" method="post">
      <%=recaptcha_challenge_writer()%>
    </form>

  <% else %>

    <!-- The solution was correct -->
    Correct!

  <%end if%>

  </body>
  </html>

関連情報

  • デザインのカスタマイズ
  • ヒントとガイドライン
  • トラブルシューティング