我遇到的问题是表单将数据提交给付款处理公司。
我实施的验证码位于: http://www.php-help.ro/examples/math_captcha_image 为此工作表单大多数提交给自己或我有权访问的PHP页面 相反,这里是表单代码:
<form action="https://secure.bluepay.com/interfaces/bp10emu" method=POST>
<input type=hidden name=MERCHANT value="100105032970">
<tr><td>Zipcode:</td><td><input type=text name=ZIPCODE></td></tr>
<tr><td>Phone:</td><td><input type=text name=PHONE></td></tr>
<tr><td>Email:</td><td><input type=text name=EMAIL></td></tr>
<tr><td>Captcha:</td><td> <input type="text" name="secure" value="what's the result?" onClick="this.value=''" /><br><br>
<img src="image.php" alt="Click to reload image" title="Click to reload image" id="captcha" onClick="javascript:reloadCaptcha()" />
</td></tr>
<tr><td colspan=2><input type=SUBMIT value="Pay Now"></td></tr>
</table>
</form>
该脚本在提交给self的表单上实现时效果很好。但自从发布到bluepay.com以来,我不确定如何在提交之前验证验证码。任何想法?
答案 0 :(得分:1)
答案 1 :(得分:1)
由于您要将其提交给其他应用程序,最好使用 JavaScript 进行检查以确定其正确性。因此,您可以使用jQuery触发AJAX事件,通过将CAPTCHA用户输入值传递给执行检查的页面来检查给定答案是否正确。如果是正确的,请提交表格。
考虑以下代码:
<?php
if ($_POST["captcha"] == $_SESSION["captcha"])
die ("OK");
else
die ("No");
?>
在JavaScript中,您可以这样使用jQuery的$.post()
函数:
$("form").submit(function(){
$.post({
url: 'check.php',
data: $("input[name='captcha']").val(),
success: function(data) {
if (data == "OK")
return true;
else
alert("CAPTCHA Fail!");
return false;
}
});
});
您可以使用以下功能:
function post_to_url($url, $data) {
$fields = '';
foreach($data as $key => $value) {
$fields .= $key . '=' . $value . '&';
}
rtrim($fields, '&');
$post = curl_init();
curl_setopt($post, CURLOPT_URL, $url);
curl_setopt($post, CURLOPT_POST, count($data));
curl_setopt($post, CURLOPT_POSTFIELDS, $fields);
curl_setopt($post, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($post);
curl_close($post);
}
检查CAPTCHA,然后处理表格。
答案 2 :(得分:0)
$("form").submit(function(){
$.post({
url: 'check.php',
data: $("input[name='captcha']").val(),
success: function(data) {
if (data == "OK")
return true;
else
alert("CAPTCHA Fail!");
return false;
}
});
});