我帮助解决了这个问题:Redirect with POST data。现在我决定整个站点甚至这个函数必须在JS被禁用时工作,我还需要为非JS解决方案提供一些建议。
需要是:
用户填写表格并点击按钮。
单击表单时,部分表单保存在数据库中,部分发布到另一个服务器(支付服务器)。用户只需要点击一次。
答案 0 :(得分:0)
如果您想让浏览器将HTTP Post请求的数据重新发送到另一个URI,HTTP / 1.1协议会向{-3}}发送信号给HTTP客户端(浏览器):< / p>
header('HTTP/1.0 307 Temporary Redirect',$replace=true,307);
header('Location: some_new_url_here');
仔细阅读规格并查看302状态的注释。
在服务器端通过API处理付款更有用,而不是冒着用户因浏览器显示的其他消息而感到烦恼的情况,用户必须真正决定是否要执行其他重定向。 / p>
答案 1 :(得分:0)
在服务器端处理用户请求时,使用CURL extension向支付服务器发布请求。
如果您的用户必须重定向到某个外部网站,请先保存所需的数据,然后使用header()
功能重定向他。请记住,在这种情况下,您将无法使用POST方法向远程支付服务器发出请求。
答案 2 :(得分:0)
答案 3 :(得分:0)
他们最初建议使用AJAX的原因是用户体验,并不要求表单能够发布。您需要向用户显示单独的步骤以选择表单或重新加载相同页面或加载其他页面。
某些伪代码例如:
<?php
if (!isset($_POST['form_type']) {
display_form_selection();
} else {
switch ($_GET['form_type']) {
case 'credit_card': display_form('credit_card');
exit;
case 'cash': display_form('cash');
exit;
default: display_form_selection();
die()
}
}
你的form_selection()例程应该绘制一个表单,其中包含一个select,复选框,单选按钮或任何将字符串或整数(用于交换机)POST回运行脚本的表单。
当页面重新加载时,它将根据传递给自身的值调用正确的display_form()。这些函数将为您要发布到网关的任何内容设置表单。
我已在本网站的其他地方读到,使用表单操作并不是一个好主意,您应该手动输入脚本名称。