web-dev-qa-db-ja.com

POSTデータをphpで別のフォームに

ページ上にフォームを作成して、簡単に実行できる情報と問題を取得したいです。

私は自分のphpページに情報を「POST」し、新しいIDを作成してデータベースに情報を保存します。そして、このページは、ID、価格などを指定して「POST」経由で外部ページにリダイレクトする必要があります。

外部ページは有料のページなので、顧客はこの外部サイトを取得し、通常のページ(多分target = "_ blank")のように使用できる必要があります。

要するに

  1. 顧客は、購入するアイテム、購入金額、配送先住所などの情報を提供します。

  2. 情報はデータベースに保存され、新しい顧客IDを生成する必要があります。

  3. ページは外部支払いページにリダイレクトし、ID、価格、支払い情報を「POST」経由で送信します。

私の問題は、外部ページにリダイレクトするが、「POST」経由でカスタム情報を送信する方法です。

1
robin591

実際には、フォームがPOSTを介して任意のページに送信できます(リモートサーバー上にある場合でも)。したがって、CGIページ(PHP、Perl、Python)のURLを指定している限り、機能するはずです。

PHPでは、ローカルまたはリモートサーバー上の任意のページにヘッダー情報を送信(したがってリダイレクト)し、フォームが送信された後にそれを行うことができます。

もちろん、以下の例では、物事は一般化されています。 「フォームにエラーがあった場合」または「データを送信できない場合」の修飾子をいくつか追加し、ユーザーを新しいページに送信しないようにします。しかし、うまくいけば、概念が役立つことがわかります。

<?php
$target = 'path-to-post-processor.php'; //leave blank to submit to self
if(isset($_POST['submit']))
{
    header('Location: http://example.com/other/page.html');
}
?>
<!--submit form via POST-->
<form action="<?php echo $target;?>" method="post">
<input name="something" type="text" maxlength="12" />
<input name="submit" type="submit" />
</form>

また、データベースが既にセットアップされていると仮定しています。それでも問題が解決しない場合は、質問に詳細を追加して(何を試したのか、エラーは何なのか)追加してください。

1
ionFish

ページを更新すると投稿データが失われる可能性があるため、Cookieメソッドの使用を選択できます。

例えば:

  1. 顧客は住所情報とその他の詳細を入力し、それがMySQLデータベースに保存され、一意の顧客IDが割り当てられます。このIDは、顧客のマシンにCookieとして保存されます-Cookieが保存されたら、支払いページである次のページに転送します。

  2. 次に、支払いページで、Cookieに保持されている顧客IDに基づいてSQLデータを取得します。

別の方法は、リダイレクトせずにAjaxソリューションを使用することです。

0
Simon Hayter