因此,我创建了一个名为get_cookie
的函数。现在,它仅返回该页面的内容。该代码有效,因为当我回显页面时,它表明我已成功登录。
所以我有2个问题
要获取Cookie,我需要在get_cookie
函数中放入什么作为返回值?
发出另一个请求时如何解析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);
?>
答案 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会自动为您创建该文件。