使用cURL登录页面后如何获取Cookie

时间:2019-02-19 22:04:46

标签: php curl post cookies

因此,我创建了一个名为get_cookie的函数。现在,它仅返回该页面的内容。该代码有效,因为当我回显页面时,它表明我已成功登录。

所以我有2个问题

  1. 要获取Cookie,我需要在get_cookie函数中放入什么作为返回值?

  2. 发出另一个请求时如何解析cookie?


<?php
function get_cookie($url, $username, $password) {

    $data = [
        "username"      => $username,
        "password"      => $password,
    ];

    $dataString = http_build_query($data);

    $ch = curl_init();

    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_POST, count($data));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $dataString);

    curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);

    return curl_exec($ch);
}

$url = "https://www.example.com/login";

$username = "user";
$password = "pass";

echo get_cookie($url, $username, $password);
?>

1 个答案:

答案 0 :(得分:0)

您可以使用以下两个卷曲选项:

CURLOPT_COOKIEJAR-作为存储返回的cookie的文件位置 CURLOPT_COOKIEFILE-进行curl调用时从何处读取要发送的Cookie

您可能会将这两个变量设置为相同的值,例如:

curl_setopt($ch, CURLOPT_COOKIEJAR , dirname(__FILE__) .'/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE , dirname(__FILE__) .'/cookies.txt');

这意味着,在发送curl请求之前,curl函数读取与进行curl调用的文件位于同一目录中的cookies.txt文件,以检查是否存储了任何cookie并将其发送(如果有)。当从“卷曲的”服务器接收到答案时,它将cookie存储在cookies.txt中的同一目录中,该目录与作为值传递给CURLOPT_COOKIEJAR选项的文件名相同。

在发出请求之前,您无需创建该文件,curl会自动为您创建该文件。