複数のcURLリクエストを実行する方法を理解するのに少し苦労しており、何が間違っているのか完全にはわかりません。私が書いたWebフォームを介してログインするためのコードが正しくない可能性がありますが、それを実行する前に最初のクエリを実行する必要があるため、それ自体をテストすることは困難です。
これは、最初のクエリ用に持っているコードです。
$handle = curl_init();
$login_user = 'user';
$login_pass = 'pass';
$username = 'username';
$password = 'password';
$postdata = "username=".$username."&password=".$password;
curl_setopt($handle, CURLOPT_URL, 'http://somewebsiteexample.php');
curl_setopt($handle, CURLOPT_USERPWD, $login_user . ":" . $login_pass );
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($handle);
curl_close($handle);
echo '<pre>';
print_r($response);
?>
これにより、基本的なhttp認証を通過できます。次に、Webフォームのphpページにリクエストを投稿して、サイトにログインできるようにする必要があります。
これを行う方法の例をたくさん見てきましたが、それはそれ自体でのみであり、2番目のcURLリクエストとしてではありません。
個々のリクエストを実行するために必要なすべての情報を持っていますが、2つのリクエストを組み合わせる方法がわかりません。同じcURLセッションでそれを行いますか?
カールの初期化リクエストを個別に実行する必要があり、CURLOPT_COOKIEJARを使用してCookieを介して最初のリクエストからのログイン情報を保存する必要があると感じます。(または、同じcurl_init()で2番目のクエリを実行できますか?)
その場合、基本http認証要求を保存して、次にcurlを初期化するときに、すでにWebサイトにログインして、WebフォームにPOSTできるようにするにはどうすればよいですか?複数のcURLリクエストを実行する方法がわかれば、残りの部分を理解できるでしょう。
私はcURLにかなり慣れていないので(私はまだ多くの場合Webページにfile_get_contents()を使用しています)、Webフォーム経由でログインするためにどのcURLオプションが絶対に必要かについても少しわかりません。非常に明白に見えるものもあれば、そうでないものもあります。これはおそらく私自身で理解できることですが、各CURLOPT定数がその特定のコンテキストで何をするかについての内訳を含むcURLでログインするための確かなチュートリアルを見つけるのは難しいです。
php.netのマニュアルには多くの情報があり、さまざまなcURLオプションが何に関連しているかを説明していますが、それらの特定の使用法の具体的な例は提供していません。cURLのより詳細な説明を入手できる別のリソースサイトがあれば、それもありがたいです。