PHPでいくつかの変数を取得し、変数を投稿変数として送信して、ユーザーをサードパーティのサイトにリダイレクトしようとしています。これはおそらく Cookie を使用すると簡単になると思いますが、サードパーティは既に投稿を処理するように設定されています。これを行う方法について何か提案はありますか?
5 に答える
使用できるテクニックがいくつかあります。1 つは、POST 変数を反復処理してフォームに追加し、おそらく Javascript onLoad を使用してフォームを再送信することです。
<html>
<body onload="document.forms[0].submit()">
<form action="new-location.php" method="post">
<?php foreach( $_POST as $key => $val ): ?>
<input type="hidden" name="<?php echo htmlSpecialChars( $key, ENT_COMPAT, 'UTF-8' ) ?>" value="<?php echo htmlSpecialChars( $val, ENT_COMPAT, 'UTF-8' ) ?>">
<?php endforeach; ?>
</form>
</body>
</html>
もう 1 つのオプションは、PHP と cURL を使用して、データをリモート サイトに送信することです。
url_setopt($ch, CURLOPT_POSTFIELDS, $_POST);
PHP ページで、cURL を使用してサードパーティの Web サイトへの接続を開き、次の関数を使用します。
curl_setopt($Curl, CURLOPT_POST, 1);
curl_setopt($Curl, CURLOPT_POSTFIELDS, 'field1=allo&field2=fsdfsd');
サードパーティは、実際の POST リクエストでもリクエストを受け取ります。サードパーティの Web サイトから回答を読むこともできます。
いくつかのグーグルは、フォームに関する恐ろしいクラッジを除いて、cURLが進むべき道であることを示唆しています。私は専門家ではありませんが、このリンクhttp://www.electrictoolbox.com/php-curl-form-post/と php cURL リファレンスが役立つはずです。
十分な情報ではありませんが、javascript (jQuery) の助けを借りてフォームを使用して送信できるかもしれません
<script>
$(function(){
$('#form').submit();
});
</script>
<form action="external.url/page.php" action="post" id="form">
<input type="hidden" name="variable" value="value" />
</form>
投稿は、ユーザーのブラウザから送信する必要があります。これを行う一般的な方法は、投稿したい変数を含む非表示の入力要素を持つフォームを含む中間ページを使用し、Javascript を使用してロード時にフォームを自動的に送信することです。