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にデータをPOSTします

于 2012-11-08T05:31:42.377 に答える
1

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

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

CAPTCHAを確認してから、フォームを処理します。

于 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 に答える