0

我遇到的问题是表单将数据提交给支付处理公司。

我实现的验证码位于此处: 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>

当嵌入到提交给自己的表单上时,该脚本可以完美运行。但自从它发布到 bluepay.com 后,我不确定如何在提交之前验证验证码。有任何想法吗?

4

3 回答 3

1

您可以为您的表单提交另一个页面,验证验证码,然后从那里重定向到支付网关。

使用 POST 数据进行 PHP 重定向

或者

您可以尝试使用 cURL -将数据发布到 PHP 中的 URL

于 2012-11-08T05:31:42.377 回答
1

方法一:使用 JavaScript

由于您要将其提交给另一个应用程序,因此最好使用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;
        }
    });
});

方法二:使用 cURL

你可以使用这样的函数:

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);
}

检查验证码,然后处理表单。

于 2012-11-08T05:37:52.307 回答
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;
        }
    });
});
于 2017-03-02T04:27:47.450 回答