首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的captcha代码实现

简单的captcha代码实现
EN

Stack Overflow用户
提问于 2012-11-08 13:19:33
回答 3查看 2.2K关注 0票数 0

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

我实现的验证码位于这里:http://www.php-help.ro/examples/math_captcha_image,为了让它工作,大多数表单提交给我自己或我可以访问的php页面,这里是表单代码:

代码语言:javascript
复制
<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,我不确定如何让它在提交之前验证验证码。有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-08 13:37:52

方法1:使用JavaScript

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

考虑下面的代码:

代码语言:javascript
复制
<?php
    if ($_POST["captcha"] == $_SESSION["captcha"])
        die ("OK");
    else
        die ("No");
?>

在JavaScript中,您可以这样使用jQuery$.post()函数:

代码语言:javascript
复制
$("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;
        }
    });
});

方法2:使用cURL

您可以使用如下函数:

代码语言:javascript
复制
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);
}

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

票数 1
EN

Stack Overflow用户

发布于 2012-11-08 13:31:42

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

PHP Redirect with POST data

您可以尝试使用cURL - POST data to a URL in PHP

票数 1
EN

Stack Overflow用户

发布于 2017-03-02 12:27:47

代码语言:javascript
复制
$("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;
        }
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13282899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档