PHPのURLへのデータのPOST


94

PHPのURL(フォームなし)にPOSTデータを送信するにはどうすればよいですか?

フォームに入力して送信する変数を送信するために使用します。

回答:


193

PHPコード自体から(htmlフォームを使用せずに)URLにデータを投稿する場合は、curlを使用できます。次のようになります。

$url = 'http://www.someurl.com';
$myvars = 'myvar1=' . $myvar1 . '&myvar2=' . $myvar2;

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $myvars);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HEADER, 0);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec( $ch );

これにより、post変数が指定されたURLに送信され、ページが返すものは$ responseになります。


2
あなたのソリューションが正しい限り、OPはHTMLフォームでそれを行う方法を知りたかったと思います。質問はあまり明確ではありませんでしたが。
Helen Neely

問題を理解できませんでしたが、プログラムがロックされました。
アルバトロス

2
何を詳しく説明することCURLOPT_FOLLOWLOCATIONに気をつけて、何をCURLOPT_HEADERCURLOPT_RETURNTRANSFERますか?完全に理解していないコードをコピーしたくない。
Stefan Fabian 2016年

1
@Mikeそれが真実である間、私は最初からすべてを明確にするか、回答で説明するためにすべてを回答に含めることを望みます。
Stefan Fabian

1
@Stefan私は答えが完全に明確であると感じました...それは質問に対処しました。理解のレベルが回答のレベルを下回っている場合は、さらに調査を行ってください。彼はまた、phpで変数を指定する方法に理由$urlがある$ことを説明する必要がありますか?どこに線を引くのですか?「これ以上質問をしない」というのは、自己学習、特にプログラミングで成功する人の態度ではありません。
Mike

75

php5で使用できるcURLなし

$url = 'URL';
$data = array('field1' => 'value', 'field2' => 'value');
$options = array(
        'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data),
    )
);

$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
var_dump($result);

6
file_get_contentsはサードパーティのホストで無効にされることが多く、cURLが唯一のオプションです
KryptoniteDove

3
@KryptoniteDove私はそれがしばしば無効にされることを知っています。私のためには、私の答え「CURLESS」のライン上に置く
ブラクÖztürk

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.