[英]Best practice for POST'ing to a new page with a redirect?
我正在嘗試解決一個看起來像這樣的工作流:(在PHP中)
當前設置:
shoppingcart.php-收集用戶運輸信息等
storeorder.php-將訂單存儲在我的數據庫中,然后組裝具有適當必需的authorize.net POST字段的表單
簡而言之,用戶最終不得不查看不必要的中間頁,在該中間頁中,他們必須單擊“付款”表單提交按鈕,然后將其發送到authorize.net。
結合這些步驟的最佳實踐是什么? (接收POST,將信息存儲在我的數據庫中,然后使用新的POST字段自動重定向到authorize.net,而無需任何用戶交互)
不要干擾用戶的錢!
即使您不想存儲信用卡詳細信息,您的網站也可能會被黑客入侵,攻擊者也會竊取它。
是唯一正確的方法。
世界上每個站點都以這種方式工作。 所以你必須。 不要把自己當作聰明的王牌。
用戶是否必須在authorize.net頁面上進行任何類型的輸入,或者您的表單提供了所有必需的信息? 如果生成所有信息,那么最簡單的方法是通過cUrl調用,對authorize.net直接將數據推送給它們,並檢查返回狀態代碼/輸出以查看其是否成功等。
如果用戶仍然需要輸入帳單明細,請使用以下方法。
表單發布到/somepage.php
somepage.php運行它的處理,處理完成后一直在底部添加頭(“ Location: https : //www.authorize.net/dopaymenthere ”);
確保您仍然在此頁面上回顯“付款”按鈕,以防萬一用戶做了一些異常操作(強迫重定向停止等),這樣看起來就不會像破損的代碼,但有一些例外情況對他們的瀏覽器做一些不尋常的事情,您仍然可以優雅地處理它們
PS:這只能通過將post變量作為get請求串聯來起作用,假設authorize.net將把get請求作為變量處理。
無需使用get請求即可做到這一點的最簡單方法是使用javascript,方法是在dom就緒的情況下提交表單...這樣您就可以向用戶顯示處理訂單消息。 並將它們以嵌入式隱藏形式直接發布到authorize.net,以防您的處理花費比預期更長的時間等。
在processing.php頁面上的jquery術語中,您將具有以下內容:
echo $form; // HTML form with all it's values required by authorize.net
echo "<h1>Processing your request</h1>";
<script type='text/javascript'>$(document).ready(function(){$('#hiddenformid').submit();});</script>
在shoppingcart.php
您可以放置一個Checkout按鈕。 按下后,將提交用戶操作。 Do not save item prices/quantity in hidden fields.
在用戶簽出按鈕的POST上,您可以將所有信息保存在數據庫中,並在PHP Post條件中創建HTML表單,以設置authorize.net的值並將標頭重定向到PAYMENT頁面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.