取得できない 異なるサーバーへのHTML/PHP Postメソッド




php post 送信 (3)

私は別のサーバ(すなわち、localhostではない)上のPHPスクリプトに詳細を送るPOSTメソッドフォームを作成したいと思います。 これも可能ですか? 私はGETがうまいと思うので、POSTは可能でしょうか?


Answer #1

スタックオーバーフローには変数を追加するためのより良い方法を示す別の質問があります。 ネストされた連想配列(ハッシュとも呼ばれます)を使用すると、上の答えに示されているメソッドが壊れてしまうので、これは優れています。

cURL POSTリクエストで配列を使用するには

そのクエリ文字列を手動で構築したい場合は、できます。 しかし、http_build_queryは、 "url-ify POSTのデータ"セクションを不要にします。 - Benjamin Powers Nov 28 '12 at 2:48


Answer #2
<form method="POST" action="http://the.other.server.com/script.php">

Answer #3

サーバーでこれを行う場合(つまり、サーバーをプロキシーとして動作させたい場合)、cURLを使用することができます。

//extract data from the post
extract($_POST);

//set POST variables
$url = 'http://domain.com/get-post.php';
$fields_string = "";
$fields = array(
        'lname'=>urlencode($last_name), // Assuming there was something like $_POST[last_name]
        'fname'=>urlencode($first_name)
    );

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
$fields_string = rtrim($fields_string,'&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

ただし、POST要求を別のサーバーに送信するだけの場合は、 action属性を変更できます。

<form action="http://some-other-server.com" method="POST">






post