HTML表单完成两个动作?验证然后通过一个提交按钮重定向

Posted

技术标签:

【中文标题】HTML表单完成两个动作?验证然后通过一个提交按钮重定向【英文标题】:HTML form complete two actions? Verify then redirect through one submit button 【发布时间】:2016-10-19 12:53:51 【问题描述】:

我在将 paypal 表单集成到我的订单页面时遇到问题。

我的订单页面目前已经有一个用户填写的表单和一个提交按钮:

<form id="order-form" form name="orderform" method="post" action="send_order_email.php">

此 send_order_email.php 会通过并验证表单是否有效,如果无效,它会重定向到抱歉页面,如果有效,我希望它使用以下内容重定向到贝宝:

 <form target=paypal action="https://www.paypal.com/cgi-bin/webscr" method=post>
    <input type=image src="https://www.paypal.com/en_GB/i/btn/x-click-but22.gif " border=0 name=submit >
    <input type=hidden name=add value=1>
    <input type=hidden name=cmd value=_cart>
    <input type=hidden name=business value=" info@info.co.uk">
    <input type=hidden name=item_name value="item">
</form>       

目前我只能通过action="send_order_email.php" 获取要发送的表单,或者我可以通过form target=paypal action="https://www.paypal.com/cgi-bin/webscr" 将表单重定向到贝宝,但这不会通过任何验证并发送没有电子邮件。

如何让表单同时执行这两项操作 - 验证一个表单,然后使用 paypals 重定向提交表单,全部通过一个提交按钮?

任何帮助将不胜感激。

谢谢!

【问题讨论】:

使用 javascript 进行验证。如果这不是一个合适的解决方案(并且无论如何您都想验证服务器端),请在 PHP 脚本中验证,然后在验证完成后在脚本本身内重定向到 PayPal。 在你的验证脚本末尾有这样的东西:header( 'Location: https://www.paypal.com/cgi-bin/webscr' ); 第一个表单使用 ajax 并成功触发 paypal 提交按钮 1) 同意所有其他人的观点,即 Ajax 甚至简单的 java-script 会是更好的选择。 2) 如果您不想在 JS 中重新编写验证脚本,则 arensb 建议的方法 re:construct an HTTP POST reuest with the various fields 会起作用,因为这只是一个 STANDARD PAYMENT 添加到购物车按钮。 【参考方案1】:

在 send_order_email 验证正确后,只需使用您发布的表单(带有隐藏字段的表单)生成一个 html 页面,用您收到的数据填充它并使用 javascript 自动提交,即

<body onload="document.theform.submit()">
   <form target=paypal action="https://www.paypal.com/cgi-bin/webscr" method=post name="theform">
    <input type=image src="https://www.paypal.com/en_GB/i/btn/x-click-but22.gif " border=0 name=submit >
    <input type=hidden name=add value=1>
    <input type=hidden name=cmd value=_cart>
    <input type=hidden name=business value=" info@info.co.uk">
    <input type=hidden name=item_name value="item">
</form>   
</body>

【讨论】:

【参考方案2】:

如果您使用 POST,或者更确切地说,如果 PayPal 需要 POST,那么我认为您无法重定向。无论如何,不​​是返回Location: http://www.paypal.com/foo/bar HTTP 标头。

您可以让send_order_email.php 获取用户提供的信息,并将其提交给 PayPal。也就是说,您的 PHP 代码可以使用各种字段构造一个 HTTP POST 请求,然后将其发送到 www.paypal.com 并处理结果。但我怀疑这是否可行,因为 PayPay 可能会要求您提供您不应该拥有的信用卡号码或 PIN。

正如上面 BoydP 所说,如果您可以在客户端上使用 JavaScript 进行验证,那就太好了。但是,如果您想(或需要)在服务器上使用 PHP 进行验证,那么最好的方法可能是使用两个屏幕:首先,用户填写信息。第二,页面显示信息并要求用户确认交易,使用上面粘贴的&lt;form&gt;代码。

【讨论】:

以上是关于HTML表单完成两个动作?验证然后通过一个提交按钮重定向的主要内容,如果未能解决你的问题,请参考以下文章

HTML,如何按回车提交表单

通过 JavaScript 强制 HTML 表单验证

带有表单验证的表单提交预览 (PHP)

验证表单输入,然后单击启动 ajax 请求

禁用表单提交按钮,而不阻止 HTML5 验证

php form提交账户密码 怎么写验证