2011-01-26 13 views
1

jqueryでの経験はほとんどありません。私の質問はこれです。私はユーザー名とパスワードのフォームを持っています。私はPHPページにアクセスするJqueryを持っているデータベースにパスワードとユーザー名が一致したら "はい"またはいいえに基づいて、入力が正しい場合は、次のページに私を連れて行きます。今、このJQueryが提出して以来、私は単語を確認しないので、ページにjavascriptのcaptchaを正しく追加する方法を見つけることができません。だから、このコードを変更したり追加して、最初にjavascriptを使って単語を検証し、次にjqueryを使う方法があるのだろうかと思っています。どんな助けでも感謝します。JqueryとCaptchaは同じページでは機能しません。

<script language="javascript"> 
    $(document).ready(function() 
    { 
     $("#login_form").submit(function() 
     { 
      //remove all the class add the messagebox classes and start fading 
      $("#msgbox").removeClass().addClass('messagebox').text('Validating....').fadeIn(1000); 
      //check the username exists or not from ajax 
     $.post("ajax_login.php",{ user_name:$('#username').val(),password:$('#password').val(),rand:Math.random() } ,function(data) 
      { 
       if(data=='yes') //if correct login detail 
       { 
       $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox 
       { 
        //add message and change the class of the box and start fading 
        $(this).html('Logging in.....').addClass('messageboxok').fadeTo(900,1, 
        function() 
        { 
        //redirect to secure page 
        document.location='edujob.php'; 
        }); 
       }); 
       } 
       else 
       { 
       $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox 
       { 
        //add message and change the class of the box and start fading 
        $(this).html('incorrect').addClass('messageboxerror').fadeTo(900,1); 
       });  
       } 

      }); 
      return false; //not to post the form physically 
     }); 
     //now call the ajax also focus move from 

    }); 
    </script> 
+1

オフトピック:スクリプトの 'language'属性は推奨されていません。 'type =" text/javascript "を使うべきです、HTML5 doctypeを使っている場合は、単純な' 'タグを使うだけです。 –

答えて

0

クライアント側のキャプチャは、エンドユーザーがバイパスすることができるため使用できません。私はcaptchaライブラリを使用することをお勧めしたいと思います。たとえば、reCAPTCHAは、Googleが管理している、非常に単純で強力なサーバーサイドライブラリであり、実装が簡単です(reCAPTCHA PHP Docs)。

$.ajax({ 
    url: "ajax_login.php", 
    type: "text", 
    dataType: "string", 
    data: $("#login_form").serialize(), 
    success: function(data) { 
    if(data === "yes") { 
     // DO SOMETHING 
    } else { 
     // DO SOMETHING 

     // Reload reCAPTCHA 
     if(typeof Recaptcha === "object") { 
     Recaptcha.reload(); 
     } 

    } 
    } 
}); 

私は最善の解決策だと思うものだ。それが実装されたら

、私はこれでJavaScriptのAJAX呼び出しを変更すると思います。

+0

私はそれを実装しましたが、今すぐ最初にjavascriptに行くのではなく、検証ページに直接行きますどのように私はこれを解決するだろうトップ? – Eric

+0

'return false;'行を追加しましたか? –

1

私は、サーバー側がどのようなユーザが入力したとスクランブル単語を一致させるために何らかの形で関与していることがあり、クライアント側のみのキャプチャを持つことができます疑います。クライアント側でマッチが起こった場合、ボットが元の単語にアクセスして人間に渡す可能性があります。

どのcaptchaを使用しますか?すべてのプラグインや何か自家製ですか?

+0

jcapそれを実行する2つのjavascriptプラグインがあります。どのようにサーバー側のキャプチャを実行するのですか? – Eric

+1

jcapは2004年頃ですが、多かれ少なかれ洗練されたボットがそれを読むことができます。 ReCaptchaやLanap BotDetect(私は後者の無料版を使用しています)のような最新のものをアドバイスしたい場合は – Andrey

関連する問題