1

これが以前に尋ねられた場合は申し訳ありませんが、私は最初のサイトに取り組んでおり、まだ学習中です. ここから取得したお問い合わせフォームにキャプチャを追加しようとしています http://www.captcha.net/ PHPを使用しています。現時点では機能していますが、サイトで提供されているコードは次のとおりです。

  <html>
    <body> <!-- the body tag is required or the CAPTCHA may not show on some browsers -->
      <!-- your HTML content -->

      <form method="post" action="verify.php">
        <?php
          require_once('recaptchalib.php');
          $publickey = "your_public_key"; // you got this from the signup page
          echo recaptcha_get_html($publickey);
        ?>
        <input type="submit" />
      </form>

      <!-- more of your HTML content -->
    </body>
  </html>

別のファイル(サーバー側)での検証コードは次のとおりです。

  <?php
  require_once('recaptchalib.php');
  $privatekey = "your_private_key";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    // What happens when the CAPTCHA was entered incorrectly
    die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
         "(reCAPTCHA said: " . $resp->error . ")");
  } else {
    // Your code here to handle a successful verification
  }
  ?>

私が疑問に思っているのは、if ステートメント (キャプチャが間違っている場合) で連絡先ページを開く方法があるかどうかですが、キャプチャ コードが間違っていることを示す非表示の div を表示して再試行する方法があるかどうかです。

4

4 に答える 4

0

あなたの「隠しdiv」のアイデアの目的が何であるかわかりません。詳細とキャプチャを入力するためのフォームをユーザーに提供し、ユーザーが送信するときに、入力されたすべてのデータを確認するだけではありませんか? すべてOKの場合は送信し、そうでない場合はエラーを表示して修正します。

もしそうなら、あなたの連絡先ページにキャプチャコードを入れてもらえませんか?
フォームと同じファイルにある場合、ユーザーが送信 (PHP_SELF) すると、送信したフォーム データ全体を実行して、入力内容 ( is_numeric()strlen()など) をチェックし、キャプチャもチェックできます。
すべてのチェックの後、エラーが発生した場合は、場所と内容を伝えて、もう一度試すことができます。それ以外の場合は、フォームを実行します (メールを送信する、DB に保存するなど)。

その後、同じページでキャプチャを確認できます。

if (!$resp->is_valid)
  {
    $CaptchaError = "error";
    // echo is invalid, reset form and make them try again
  }
else
  {
    $CaptchaError = "ok";
  }

なんらかの理由で別のファイルのコードをフォームにキャプチャする必要がある場合は、URL vars GET または SESSION を POST または設定するだけで、ヘッダー リダイレクトを使用してキャプチャ フォームがある場所にそれらを送り返すときに、それらを提供するためのデータが得られます。エラー通知で。
通常、POST データを使用して 1 つのページでこれらすべてを処理するのが、最も簡単で管理しやすい方法です。

于 2013-09-04T14:07:54.680 に答える
0

あなたの場合、次の方法で試すことができます:

verify.php

if (!$resp->is_valid) {
    header("Location: contact.php?show-error"); // replace by your file name
    exit;
}
else {
    // Your code here to handle a successful verification
}

contact.php

if(isset($_GET['show-error'])){
    echo "<div>
        The reCAPTCHA wasn't entered correctly. 
        Go back and try it again.
    </div>";
}

または:

<div style="display:<?php echo isset($_GET['show-error']) ? "block" : "none"; ?>">
    The reCAPTCHA wasn't entered correctly. 
    Go back and try it again.
</div>

verify codeでもあなたの場合は、お問い合わせページに移動したほうがいいと思います。したがって、条件に応じてメッセージを表示することを簡単に決定できます。

于 2013-09-04T14:07:54.637 に答える