web-dev-qa-db-ja.com

パラメータを追加するPhpカール

PHPのCurlで別のスクリプトをトリガーするスクリプトを取得しようとしている初心者ですが、パラメーターを送信していないようです。

パラメータを追加するための別の関数はありますか?

<?php
$time = time();
$message = "hello world";


$urlmessage =  urlencode( $message );

$ch = curl_init("http://mysite.php?message=$urlmessage&time=$time");

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
?>

誰かが私を正しい方向に向けることができますか?

10
Christopher

curl_setopt() とCURLOPT_POSTFIELDSパラメーターが必要です。それはPOSTターゲットページに与えられたパラメータです。

curl_setopt($ch, CURLOPT_POSTFIELDS, 'foo=1&bar=2&baz=3');

PS: http_build_query() もチェックしてください。これは多くの変数を送信するときに便利です。

17
ChrisR

受け入れられた回答はPOSTには適していますが、OPが特にGETしたい場合はどうでしょうか。一部のREST APIはhttpメソッドを指定しますが、GETする必要があるときにPOSTするのは適切ではないことがよくあります。

いくつかのパラメータでGETを実行するコードのフラグメントを次に示します。

_$endpoint = 'http://example.com/endpoint';
$params = array('foo' => 'bar');
$url = $endpoint . '?' . http_build_query($params);
curl_setopt($ch, CURLOPT_URL, $url);
_

これにより、リクエストはGETから_http://example.com/endpoint?foo=bar_で行われます。これは、curl_setopt($ch, CURLOPT_POST, true)POSTのような他の方法に設定しない限り、デフォルトのhttpメソッドです。したがって、特にGETが必要な場合は、これを行わないでください。

他のhttpメソッド(たとえば、DELETEまたはPUT)のいずれかを使用する必要がある場合は、curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method)を使用します。これは、GETおよびPOSTでも機能します。

6
Coder

_CURLOPT_POST_をtrueおよび_CURLOPT_POSTFIELDS_ =>パラメーターとして設定する必要があります

_  curl_setopt($ch, CURLOPT_POST, true); 
   curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
_

提案、 '_CURLOPT_RETURNTRANSFER_'をtrueに設定して、転送を直接出力するのではなく、curl_exec($ch)の戻り値の文字列として返します。

5
The Mask