使用POST数据重定向

时间:2011-07-07 16:43:31

标签: php javascript redirect

我正在开发一个购物车,其中包含使用不同API的多种付款方式。

我想要的流程是用户选择使用哪种付款方式,并显示相应的表格。

在提交时,有关地址等的表单字段应保存在我的数据库中,有关付款的字段将通过POST发送到付款处理程序api。

用户只需单击一次就可以了,因此必须在点击提交按钮和将数据发送到付款服务器之间挤压db-save。

我想到了一个重定向,其中所有数据都被POSTED到,并且将数据保存在数据库中并重定向到支付服务器但是我如何重定向以及POST数据(不幸的是,GET不能正常工作)。

4 个答案:

答案 0 :(得分:3)

您无法向HTTP客户端发送传统的Location:标头以执行重定向并包含POST数据。你可以做的是:

  • 使用AJAX请求获取正确的目标网址
  • 通过JavaScript(在AJAX回调函数中)使用该URL更新表单操作
  • 提交表格

答案 1 :(得分:2)

最简单的方法是在JavaScript代码中使用表单提交处理程序,该处理程序将发出AJAX POST请求以保存与客户相关的信息。

  • 付款表单的操作应指向付款网关
  • 将提交事件上的JavaScript附加到付款表单
  • 在提交处理程序中,收集所有客户信息(名称,地址等)并向服务器发出AJAX POST。
  • 确保提交处理程序返回false,以便POST尚未提交到支付网关
  • AJAX POST成功后,使用JavaScript提交付款表单。

这也可以节省您的时间,因为您可以控制要发送到服务器的参数(除非您经过认证,否则不应将客户的信用卡/ CVV号码发送到您的服务器)。

答案 2 :(得分:-1)

如果安装了PECL http扩展(它将在phpinfo()中显示为pecl_http),您可以创建HTTP POST请求并按以下模式吐出结果:

// your DB code above here
$pay_request = new HttpRequest($remote_url, HTTP_METH_POST);
$pay_request->addPostFields($_POST);
$pay_request->send()->send();

最后一行不是拼写错误 - 请求返回响应,然后响应被转储到输出缓冲区。

答案 3 :(得分:-1)

试试这个

        $context = stream_context_create(array(
        'http' => array(
          'method'  => 'POST',
          'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
          'content' => http_build_query($_POST)
        ),
      )); 

    echo file_get_contents($url, false, $context);