如果你信不信,已经坐了一整天了:)我想通过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.."); }
}
});
}
这真的很有道理,很好,但我总是收到"不接受"的消息,所以我认为不知怎么的还是有漏洞?