4

私はソーシャル ネットワークでコメント システムに取り組んでいます。jquery を使用しています。問題なく ajax でコメントを投稿できますが、コメントが多すぎる場合やその他の理由でユーザーがキャプチャ フォームを送信する必要がある場合があります。

これを行う最善の方法は、現在のコメント投稿部分に追加することだと思います.phpスクリプトが応答を返し、キャプチャフォームを実行する必要があることを示している場合は、画面で、ユーザーにキャプチャ フォームに入力してもらい、続けてそこにコメントを投稿します。

これは私にとってはやや複雑ですが、ほとんどのことは完了していると思います。おそらく、以下の私のコメントを読んで、主にダイアログを開いて開く方法、コメント値を渡す方法について、キャプチャの部分で私を助けてください/キャプチャを介してテキストを送信し、成功すると再びコメントに戻ります。また、ユーザーがキャプチャを間違えた場合は、キャプチャをリロードします

$.ajax({
    type: "POST",
    url: "processing/ajax/commentprocess.php?user=",
    data: args,
    cache: false,
    success: function (resp) {
        if (resp == 'captcha') {
            //they are mass posting so we need to give them the captcha form
            // maybe we can open it in some kind of dialog like facebox
            // have to figure out how I can pass the comment and user data to the captcha script and then post it
        } else if (resp == 'error') {
            // there was some sort of error so we will just show an error message in a DIV
        } else {
            // success append the comment to the page
        };
    }
});
4

2 に答える 2

5

jQueryUIライブラリに付属しているモーダルダイアログを使用することを選択すると思います。次に、AJAX呼び出しを関数でラップして、再帰的に呼び出すことができるようにします。キャプチャ画像の表示を処理するDIV(#captchaDialog)と、回答を入力するための入力(#captchaInput)を作成します。ユーザーがモーダルダイアログの[OK]ボタンをクリックすると、元の引数を新しいキャプチャ応答で変更し、関数を呼び出します。このソリューションは、元の引数を変更して同じURLに再渡すだけなので、このソリューションが機能すると思います。

いくつかのサンプルコードから、モーダルダイアログのdivと入力を除いたもの:

var postComment = function(args) {
    $.ajax({
        type: "POST",
        url: "processing/ajax/commentprocess.php?user=",
        data: args,
        cache: false,
        success: function (resp) {
            if (resp == 'captcha') {
                $("#captchaDialog").dialog({
                    bgiframe: true,
                    height: 140,
                    modal: true,
                    buttons: {
                     ok: function() {
                        args.captchaResponse = $(this).find("#captchaInput").val();
                        postComment(args);
                     }
                    }
                });
            } else if (resp == 'error') {
                // there was some sort of error so we will just show an error message in a DIV
            } else {
                // success append the comment to the page
            };
        }
    });
};

お役に立てれば!

于 2009-08-11T01:17:06.827 に答える
0

側の考え:

最高のユーザー エクスペリエンスを実現するために、逆 CAPTCHA の実装を強く検討します。

http://www.ccs.uottawa.ca/webmaster/reverse-captcha.html

これがあなたの質問のニーズに対応していないことは理解していますが、少なくともこれについて言及する必要がありました. これは、ユーザーに代わって入力を必要としないスパム防止方法です。

于 2009-08-11T02:25:45.690 に答える