我在弄清楚如何运行多个 cURL 请求时遇到了一些困难,而且我不完全确定我做错了什么。可能是我编写的通过网络表单登录的代码不正确,但很难自行测试,因为我确实需要先运行第一个查询才能执行此操作。
这是我第一次查询的代码;
$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 身份验证。现在我需要能够通过将请求发布到 webform php 页面来登录该站点。
我已经看到很多如何做到这一点的例子,但只是他们自己的,而不是作为第二个 cURL 请求。
我拥有完成每个单独请求所需的所有信息,但我不确定如何将这两个请求组合在一起。我是否在同一个 cURL 会话中执行此操作?
我觉得我确实需要执行单独的 curl 初始化请求,并且我需要使用 CURLOPT_COOKIEJAR 通过 cookie 存储来自第一个请求的登录信息。(或者我可以在同一个 curl_init() 中运行我的第二个查询吗?)
如果是这种情况,我如何存储基本的 http 身份验证请求,以便下次初始化 curl 时,我已经登录到可以 POST 到 webform 的网站?一旦我知道如何执行多个 cURL 请求,我可能会弄清楚其余的部分。
我对 cURL 还很陌生(我仍然经常在网页上使用 file_get_contents()),所以我也有点不确定哪些 cURL 选项对于通过 webform 登录是绝对必要的。有些看起来很明显,而另一些则不然。这可能是我自己可以弄清楚的,但是很难找到一个可靠的使用 cURL 登录的教程,其中详细介绍了每个 CURLOPT 常量在该特定上下文中的作用。
php.net 手册有很多信息,虽然它确实告诉您各种 cURL 选项的关系,但它没有提供其具体用法的具体示例。如果有另一个资源站点可以让我更深入地解释 cURL,那也将不胜感激。