Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 简单的验证码实现_Php_Html - Fatal编程技术网

Php 简单的验证码实现

Php 简单的验证码实现,php,html,Php,Html,我遇到的问题是表单向支付处理公司提交数据 我实施的验证码位于此处: 为了实现这一点,大多数表单都会提交给self或我有权访问的php页面 以下是表格代码: <form action="https://secure.bluepay.com/interfaces/bp10emu" method=POST> <input type=hidden name=MERCHANT value="100105032970"> <tr><td&g

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

我实施的验证码位于此处: 为了实现这一点,大多数表单都会提交给self或我有权访问的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>

Zipcode:
电话:
电邮:
验证码:


当脚本在提交给self的表单上实现时,它可以完美地工作。但由于它发布到bluepay.com,我不知道如何让它在提交之前验证验证码。有什么想法吗?

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

您可以尝试使用cURL-

方法1:使用JavaScript 由于您要将其提交给另一个应用程序,因此最好使用JavaScript检查其正确性。因此,您可以使用jQuery触发一个AJAX事件,通过将CAPTCHA用户输入值传递给执行检查的页面来检查给定的答案是否正确。如果正确,则提交表格

考虑以下代码:

<?php
    if ($_POST["captcha"] == $_SESSION["captcha"])
        die ("OK");
    else
        die ("No");
?>
方法2:使用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);
}

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

不可能,因为您正在将表单数据发送到外部网站。您可能需要更改逻辑并尝试使用
cURL
。不太熟悉使用cURL提交表单。ajax如何?我正在考虑让它使用ajax验证验证码,如果它是好的…然后提交表单?您可以将验证码分离成单独的表单,然后如果验证码正确,则使用其他表单显示表单字段。@如果禁用JavaScript,fogsy将无法工作。@Korikulum是的。假设JavaScript 100%工作。因为im构建的大部分内容都是使用ajax的。方法1有许多循环漏洞。因为表格是提交给外部申请的,所以我们对申请没有任何控制权。例如,禁用Javascript将允许表单在不验证CAPT的情况下提交。我不确定AJAX方法是否能真正保护自动化软件。@PraveenKumar正是我所想的,我不知道如何将其放入许多代码中thanks@fogsy很高兴这有帮助。谢谢。:)@PraveenKumar嘿Praveen,它以同样的方式提交表格:。。。不幸的是,它不能工作。Yelse警报(“验证码失败!”);返回false;添加一些解释,说明您的答案对OP和其他人有何帮助。谢谢
$("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;
        }
    });
});
$("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;
        }
    });
});