[解決済み] POSTデータによるPHPリダイレクト
質問
このテーマについて調べてみたところ、専門家の間では 可能 ということで、代替案をお願いしたいのですが。
私の状況
ページ A: [checkout.php] 顧客が請求書詳細を入力する。
ページB: [process.php] 請求書番号を生成し、顧客の詳細をデータベースに保存します。
ページC: [thirdparty.com] 第三の支払ゲートウェイ(ONLY ACCEPT POST DATA)。
顧客はページAで詳細を入力し、カートを設定した後、ページBにPOSTします。process.php内部で、POSTされたデータをデータベース内に保存し、請求書番号を生成します。その後、顧客データと請求書番号をthirdparty.comの支払いゲートウェイにPOSTします。問題は、ページBでPOSTを行うことです。cURLはページCにデータをPOSTすることができますが、問題はページがページCにリダイレクトされないことです。
サードパーティの決済ゲートウェイからAPIのサンプルをもらいましたが、そのサンプルは請求書番号と顧客の詳細情報をPOSTするものでした。 システムで不要な請求書番号を過剰に生成しないようにしたいのです。
何か解決策はあるのでしょうか? 私たちの現在の解決策は、顧客がページAで詳細を記入し、ページBで我々はそこにすべての顧客の詳細を示す別のページを作成し、ユーザーがページCにPOSTするためにCONFIRMボタンをクリックすることができますされています。
私たちの目標は、お客様が1回クリックするだけで済むようにすることです。
私の質問が明確であることを願っています :)
どのように解決するのですか?
ページBに必要なデータとページCへのアクションを設定したフォームを生成し、ページロード時にJavaScriptで送信します。ユーザーの手を煩わせることなく、データはページCに送信されます。
これしかないでしょう。リダイレクトとは、303 HTTPヘッダーのことで、これを読むと http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html が、その一部を引用します。
<ブロッククオートリクエストに対するレスポンスは は別のURIで見つかり、そのURIを使用すべきです。 のGETメソッドで取得することができます。 そのリソースの このメソッドは の出力を可能にするためです。 POSTで起動されたスクリプトをリダイレクトするために ユーザーエージェントを選択したリソースに このとき 新しいURIは代替参照ではありません。 は、元々要求されたリソースのためのものである。 303応答はキャッシュされてはならない[MUST NOT]。 しかし、2番目の (リダイレクトされた) リクエストは キャッシュ可能です。
あなたがやっていることを実現する唯一の方法は、ユーザーをページCに送る中間ページを使うことです。以下は、それを実現するための小さな/簡単なスニペットです。
<form id="myForm" action="Page_C.php" method="post">
<?php
foreach ($_POST as $a => $b) {
echo '<input type="hidden" name="'.htmlentities($a).'" value="'.htmlentities($b).'">';
}
?>
</form>
<script type="text/javascript">
document.getElementById('myForm').submit();
</script>
また、Javascriptを使用しないユーザーでもサービスを利用できるように、noscriptタグ内に簡単な確認フォームを用意する必要があります。
関連
-
[解決済み] 整形されていない数値が発生しました。
-
[解決済み】 PHP 未定義関数の呼び出し
-
[解決済み] mysql_field_nameを新しいmysqliに変更します。
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] フォーム送信のようなJavaScriptのポストリクエスト
-
[解決済み] HTTP POSTリクエストでは、どのようにパラメータが送信されるのですか?
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
-
[解決済み] application/x-www-form-urlencoded or multipart/form-data?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み】 $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて]
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み】「Fatal error: Class 'MySQLi' not found "を解決するには?
-
[解決済み] [Solved] Fatal error: メンバ関数 query() の null への呼び出し。
-
[解決済み】phpのシンタックスエラー、予期しないT_IFエラーを修正する方法は?[クローズド]。
-
[解決済み] オートロードとは何ですか; spl_autoload、__autoload、spl_autoload_register はどのように使うのですか?
-
[解決済み] 自己署名証明書による HTTPS 接続の受け入れ