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

时间:2016-06-17 15:53:28

标签: php html forms paypal action

我在将paypal表单整合到订单页面时遇到了问题。

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

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

此send_order_email.php会通过并验证表单是否有效,如果不是,它会重定向到抱歉页面,如果有效,我希望它重定向到PayPal,如下所示:

 <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 alt="Make payments with PayPal - it's fast, free and secure!">
    <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"使表单重定向到paypal,但是这不会通过任何验证并且不发送电子邮件。

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

任何帮助都会非常感激。

谢谢!

2 个答案:

答案 0 :(得分: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 alt="Make payments with PayPal - it's fast, free and secure!">
    <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>

答案 1 :(得分:0)

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

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

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