📜  如何从 curl 获取 cookie 到PHP中的变量中?(1)

📅  最后修改于: 2023-12-03 15:23:46.409000             🧑  作者: Mango

如何从 curl 获取 cookie 到 PHP 中的变量中?

在使用 curl 发送 HTTP 请求时,服务器可能会发送一些 cookie,这些 cookie 可以在后续请求中用于身份验证或其他目的。在 PHP 中,我们可以获取这些 cookie 并将它们保存为变量供后续使用。

以下是通过 curl 获取 cookie 并将它们保存到 PHP 变量中的步骤:

1. 创建 curl 请求

要发送 curl 请求,请使用 curl_init() 函数创建一个 curl 句柄。

$ch = curl_init();

//设置请求的 URL
curl_setopt($ch, CURLOPT_URL, "http://www.example.com");
2. 启用 cookie 支持

要启用 cookie 支持,请使用 curl_setopt() 函数将 CURLOPT_COOKIEFILECURLOPT_COOKIEJAR 设置为文件路径。这些文件将用于保存 cookie。

//启用 cookie 支持
curl_setopt($ch, CURLOPT_COOKIEFILE, '/path/to/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, '/path/to/cookie.txt');
3. 发送请求并获取 cookie

使用 curl_exec() 函数发送 curl 请求并获取返回的数据。在请求完成后,我们可以使用 file_get_contents() 函数读取保存 cookie 的文件,并将 cookie 的值赋给 PHP 变量。

//发送请求并获取响应
$response = curl_exec($ch);

//获取 cookie
$cookie = file_get_contents('/path/to/cookie.txt');
4. 关闭 curl 句柄

在完成 curl 请求后,请使用 curl_close() 函数关闭 curl 句柄。

//关闭 curl 句柄
curl_close($ch);

现在,我们可以使用 $cookie 变量来访问从服务器接收到的 cookie。

以下是完整的代码示例:

//创建 curl 句柄
$ch = curl_init();

//设置请求的 URL
curl_setopt($ch, CURLOPT_URL, "http://www.example.com");

//启用 cookie 支持
curl_setopt($ch, CURLOPT_COOKIEFILE, '/path/to/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, '/path/to/cookie.txt');

//发送请求并获取响应
$response = curl_exec($ch);

//获取 cookie
$cookie = file_get_contents('/path/to/cookie.txt');

//关闭 curl 句柄
curl_close($ch);
注意事项

在使用 curl 获取 cookie 时,请注意以下事项:

  • cookie 文件必须是可写的。
  • cookie 文件路径必须是绝对路径。
  • 在每个请求中,要使用相同的 CURLOPT_COOKIEFILECURLOPT_COOKIEJAR 选项值,以便在同一文件中保存所有 cookie。
结论

在 PHP 中,我们可以使用 curl 和文件 I/O 函数获取从服务器发送的 cookie 并将其保存为变量。这些 cookie 可以在后续请求中使用,以实现身份验证或其他目的。