通过AJAX打开的PHP文件-发出Captcha警报并发送url数据


PHP file which is opened by AJAX - Give Captcha alert and send url-data

如果你信不信,已经坐了一整天了:)我想通过GET方法将数据传输到外部.jsp文件(例如.com/data.php?attribute=value&a2=v2等等)

到目前为止,这一切似乎都奏效了,也得到了验证。现在我的问题是,我有一个由php文件生成的captcha,该captcha在HTML表单数据发布到的php文件中进行控制/验证。

当一切正常时,我可以在submitHandler中发出警报(成功:函数(响应)),但如果Captcha不正确,我现在如何获得警报?

我该如何解决这个问题?我可以通过AJAX从PHP文件中获取一个值或变量来处理它(显示警报)吗?

如果有任何帮助或意见,我们将非常高兴。

谢谢!

HERE验证成功后,数据将被验证并发送到PHP文件。

<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script type="text/javascript">
(function($,W,D)
{
    var JQUERY4U = {};
    JQUERY4U.UTIL =
    {
        setupFormValidation: function()
        {
            $("#form-id").validate({
                rules: {
                    firstname: "required",
                    .........
                },
                messages: {
                    firstname: "Please enter your firstname",
                    ..........
                },
                submitHandler: function(form)
                    var data = $("#nachricht").serializeArray();
                    $.ajax({
                    type:"POST",
                    url:"nachricht.php",
                    data: data,
                    dataType: "text",
                    success: function(response) {
                    alert('Thank you!');
                        }
                    });
                }
            });
        }
    }
    $(D).ready(function($) {
        JQUERY4U.UTIL.setupFormValidation();
    });
})(jQuery, window, document);

PHP文件:在这里,数据被传输到另一个URL(GET方法),并检查Captcha

$email = urlencode($_POST['email']);
$name = urlencode($_POST["name"]);
....
session_start();
if(isset($_SESSION['captcha_spam']) AND $_POST["captchafield"] == $_SESSION['captcha_spam']) // Captcha korrekt
{
    unset($_SESSION['captcha_spam']);
$link = "http://www.example.com/data.jsp?email=" . $email . "&name=" . $name . $titel . "&text=" . $text . "&ranking=" . $ranking . "&captchafield=" . $captcha_s;
header( "refresh:0;url=" . $link);
exit;
....

好吧,现在我的PHP文件中有表单提交到的位置:

if(enteredcaptcha == captcha){
echo "<script type='text/javascript'> alert('captcha_correct');</script>";  
} else { 
echo "<script type='text/javascript'> alert('captcha_not_correct');</script>";  
}

在我的普通HTML文件中,Form和Javascript是我的:

submitHandler: function(form) {
                    var data = $("#kommentar").serializeArray();
                    $.ajax({
                    type:"POST",
                    url:"kommentar.php",
                    data: data,
                    dataType: "text",
                    success: function(response) {
                    if( response == "captcha_is_correct" ){ alert("Success"); } else { alert("unsuccess.."); }
                        }
                    });
                }

这真的很有道理,很好,但我总是收到"不接受"的消息,所以我认为不知怎么的还是有漏洞?