0

フォームに CAPTCHA を入れて、CAPTCHA が正しく入力されていれば送信します。jQuery AJAXを使用して、一致チェックのために入力されたコードを送信しています。しかし、入力されたCAPTCHAが正しいかどうかに関係なく、jQueryで同じ結果が得られます。

この問題を解決し、CAPTCHA チェックで正しい結果を得るにはどうすればよいですか?

PHPとjQueryの両方の私のコードは次のとおりです。

PHP (generateimage.php):

header('Content-type:image/jpeg');
$text = rand(100000, 999999);

...

if (isset($_POST['check_capcha'])) {
  $check =$_POST['check_capcha'];
  if ($check == $text) {
    echo true;
  }
}

jQuery:

var check_capcha = $("#human_check_sub").val();
check_capcha = parseInt(check_capcha);
$.post("../php/generateimage.php", {check_capcha:check_capcha}, function(data) {
  if (data) {
    //$.post("../php/core.php");
    alert("ok sub");
  } else {
    $("#img_cap_sub").attr("src", "../php/generateimage.php");
    $("#caution_sub").html('<span>Capcha entered incorrect.try again</span>');
  }
});
4

2 に答える 2

0

$.post 呼び出しで、最初の check_captcha を引用符で囲む必要がある場合があります。

 $.post("../php/generateimage.php",{"check_capcha":check_capcha},function(data){

考えてみると、JS はキーと値の両方に check_captcha の値を使用するため、php ページがそれを認識していない可能性があります。

編集: 申し訳ありませんが、上記の Marc B のコメントを見ていませんでした。一致しません (一致した場合はかなり悪いことになります)

  • ケン
于 2012-07-25T14:27:02.780 に答える
0

試行の検証時を含め、すべての ajax リクエストに対して新しいキャプチャを生成しているようです。新しいイメージを生成するのではなく検証チェックを行っている場合は、rand 呼び出しをスキップします。check_capchaそれを生成するときに、正しい値をセッション変数に保存するか、試行された回答でパラメーターを渡すときにチェックします。

現在、ifステートメントはほぼ確実にfalseを返します

何かのようなもの

    session_start();

    if(!isset($_REQUEST['check_capcha']))
    {
        $_SESSION['correct'] = rand(100000, 999999);
        ...
        ...
        ...
    }
    else
    {
        if($check == $_SESSION['correct'])
        {
            echo true ;
        }
    }
于 2012-07-25T14:32:02.373 に答える