PHP POSTデータによるリダイレクト 質問する

PHP POSTデータによるリダイレクト 質問する

私はこのテーマについて調査してみましたが、専門家の中にはそうではないと言う人もいます。可能ですので、別の解決策をお願いしたいと思います。

私の状況:

ページ A: [checkout.php] 顧客が請求の詳細を入力します。

ページ B: [process.php] 請求書番号を生成し、顧客の詳細をデータベースに保存します。

ページ C: [thirdparty.com] サード ペイメント ゲートウェイ (POST データのみを受け入れます)。

顧客はページ A で詳細を入力し、カートを設定し、ページ B に POST します。process.php 内で、POST されたデータをデータベース内に保存し、請求書番号を生成します。その後、顧客データと請求書番号を thirdparty.com 支払いゲートウェイに POST します。問題はページ B で POST を実行することです。cURL はデータをページ C に POST できますが、問題はページがページ C にリダイレクトされないことです。顧客はページ C でクレジットカードの詳細を入力する必要があります。

サードパーティの支払いゲートウェイは API サンプルを提供しましたが、そのサンプルは請求書番号と顧客の詳細を POST するものです。システムで不要な請求書番号が過剰に生成されるのは望ましくありません。

これに対する解決策はありますか? 現在の解決策は、顧客がページ A で詳細を入力し、ページ B ですべての顧客の詳細を表示する別のページを作成し、ユーザーが [確認] ボタンをクリックしてページ C に投稿できるようにすることです。

私たちの目標は、顧客が一度クリックするだけで済むようにすることです。

私の質問が明確であることを願います :)

ベストアンサー1

ページ B で、必要なすべてのデータとページ C へのアクションが設定されたフォームを生成し、ページの読み込み時に JavaScript を使用して送信します。データは、ユーザーにとって大きな手間をかけずにページ C に送信されます。

これが唯一の方法です。リダイレクトとは、303 HTTPヘッダーのことです。http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.htmlですが、その一部を引用します。

リクエストへの応答は別の URI で見つかる可能性があり、そのリソースの GET メソッドを使用して取得する必要があります。このメソッドは主に、POST でアクティブ化されたスクリプトの出力がユーザー エージェントを選択したリソースにリダイレクトできるようにするために存在します。新しい URI は、最初にリクエストされたリソースの代替参照ではありません。303 応答はキャッシュしてはなりませんが、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 タグ内に簡単な「確認」フォームを用意する必要があります。

おすすめ記事