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 进行验证,那么最好的方法可能是使用两个屏幕:首先,用户填写信息。第二,页面显示信息并要求用户确认交易,使用上面粘贴的<form>
代码。
【讨论】:
以上是关于HTML表单完成两个动作?验证然后通过一个提交按钮重定向的主要内容,如果未能解决你的问题,请参考以下文章