HTTPPOSTを使用してPHPcURLを実行する方法を教えてもらえますか?
次のようなデータを送信したい:
username=user1, password=passuser1, gender=1
にwww.example.com
cURLがのような応答を返すことを期待していresult=OK
ます。例はありますか?
<?php
//
// A very simple PHP example that sends a HTTP POST to a remote site
//
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.example.com/tester.phtml");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"postvar1=value1&postvar2=value2&postvar3=value3");
// In real life you should use something like:
// curl_setopt($ch, CURLOPT_POSTFIELDS,
// http_build_query(array('postvar1' => 'value1')));
// Receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close ($ch);
// Further processing ...
if ($server_output == "OK") { ... } else { ... }
?>
次の方法で簡単にアクセスできます。
<?php
$post = [
'username' => 'user1',
'password' => 'passuser1',
'gender' => 1,
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.domain.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
$response = curl_exec($ch);
var_export($response);
フォームがリダイレクト、認証、Cookie、SSL(https)、またはPOST変数を期待する完全に開いたスクリプト以外のものを使用している場合は、すぐに歯を食いしばり始めます。スヌーピーを見てください。これは、多くのオーバーヘッドを設定する必要をなくしながら、あなたが考えていることを正確に実行します。
自分の Web サイトに情報を渡す場合のより簡単な答えは、SESSION 変数を使用することです。次のように php ページを開始します。
session_start();
ある時点で、PHP で生成してセッションの次のページに渡したい情報がある場合は、POST 変数を使用する代わりに、それを SESSION 変数に割り当てます。例:
$_SESSION['message']='www.'.$_GET['school'].'.edu was not found. Please try again.'
次のページでは、この SESSION 変数を参照するだけです。注: 使用後は、必ず破棄してください。使用後は保持されません。
if (isset($_SESSION['message'])) {echo $_SESSION['message']; unset($_SESSION['message']);}
$curlHandler = curl_init();
curl_setopt_array($curlHandler, [
CURLOPT_URL => 'https://postman-echo.com/post',
CURLOPT_RETURNTRANSFER => true,
/**
* Specify POST method
*/
CURLOPT_POST => true,
/**
* Specify array of form fields
*/
CURLOPT_POSTFIELDS => [
'foo' => 'bar',
'baz' => 'biz',
],
]);
$response = curl_exec($curlHandler);
curl_close($curlHandler);
echo($response);