如何在发送之前拦截表单的值?

sab*_*b0t 8 php forms jquery post beanstream

我目前有一个大型表格被发送到我们的付款授权人(通过action ="paymentautherizerURL"这样做),但是当我将交易存储在我的数据库中时,我没有得到他要求的所有信息.

我要么在提交之前拦截表单数据,以便我可以将它存储在会话中(我们使用的是PHP/jQuery),或者我也尝试将它发送到中间scriptlet,它抓取我需要的信息,然后使用jQuery的$ .post()重新构建并将数据发送给授权人.

然而,第二种方法似乎不起作用,至少在我的努力中是这样.我不确定$ .post是否正确模拟了表单的发送操作,或者至少我没有正确完成.

<?php
session_start();

$post = $_POST;

//gets all of the information that beanstream does not return to approved.php, but is still required to make
//a legitimate database entry. gets from the POST and stores in the session array for approved.PHP to access

$_SESSION['approvedArray']['billAddress'] = $_POST['ordAddress1'];
$_SESSION['approvedArray']['billProvince'] = $_POST['ordProvince'];
$_SESSION['approvedArray']['billCountry'] = $_POST['ordCountry'];
$_SESSION['approvedArray']['billPostalCode'] = $_POST['ordPostalCode'];
$_SESSION['approvedArray']['billCity'] = $_POST['ordCity'];

$_SESSION['approvedArray']['shipAddress'] = $_POST['shipAddress1'];
$_SESSION['approvedArray']['shipPostal'] = $_POST['shipPostalCode'];
$_SESSION['approvedArray']['shipCity'] = $_POST['shipCity'];
$_SESSION['approvedArray']['shipProvince'] = $_POST['shipProvince'];
$_SESSION['approvedArray']['shipCountry'] = $_POST['shipCountry'];

session_write_close();
//the javascript below will send what is required to beanstream as though it were sent from the form

<script type='text/javascript'>
$.post(, {
    <?php
    //rebuild the POST such that "name: value, " except the last name/value will not be followed by a comma
    $keys = array_keys($_POST);
    for($i = 0; $i < count($_POST); $i++) {
        $currentKey = $keys[$i];
        $currentPost = $_POST[i];
        echo $currentKey . ": " . $currentPost;
        if ($i < (count($_POST) - 1)) {
            echo ", ";
        }
    }
    ?>
});
</script> 

?>
Run Code Online (Sandbox Code Playgroud)

通常,交易授权人会将用户重定向到3个页面之一(已批准,拒绝,错误),我们的网站也会从那里完成工作.然而,它目前停留在这个页面,这让我觉得它没有正确发送.

我愿意接受各种形式的批评,方法和想法.非常感谢,如果需要任何其他信息,请告诉我!

Jas*_*per 3

如何更改表单标签以包含 onSubmit 属性:

<form action="notmal_action.whatever" onSubmit="return save_data_function()">
Run Code Online (Sandbox Code Playgroud)

save_data_function 从表单中读取值并将其发送到服务器上的脚本以保存在数据库中(或任何位置)。我使用隐藏的 iframe 来对用户隐藏此请求......

<script>
function save_data_function() {
$('#iframe_id').attr('src', 'data_saving_script.extension?data_1=' + $('form_data_1').val().serialize() + '&data_2=' + $('form_data_2').val().serialize());
}
</script>
Run Code Online (Sandbox Code Playgroud)

如果数据传递到“data_ saving_script.extension”文件的速度不够快,您可以设置超时。