我遇到使用CURL登录网站的问题。我读了会话ID但要使用它,我必须重新加载与更改相关的页面。如何动态使用当前会话ID?
<?php
$post = 'login=testowe12&register=0&password=testowe12&cookie_check=1&_xfToken=&redirect='.urlencode("http://gsmx.co");
$handle = curl_init('http://gsmx.co/logowanie/login');
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_HEADER, 1);
curl_setopt($handle, CURLOPT_HTTPHEADER, array(
'Host: gsmx.co',
'Content-Length: 93',
'Cache-Control: max-age=0',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Origin: http://gsmx.co',
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36',
'Content-Type: application/x-www-form-urlencoded',
'Referer: http://gsmx.co/login',
'Accept-Language: pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4'));
//'Cookie: xf_session='.$cookie["xf_session"].'; GCSCU_770734409090_H2=C=770734409090.apps.googleusercontent.com:S=81bef9fa0c3fbdaac13c33f8b709fc73474d3562.kvhqgGncJscCDSvW.7dde:I=1403792615:X=1403879015'));
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($handle, CURLOPT_POSTFIELDS, $post);
$output = curl_exec($handle);
preg_match('/^Set-Cookie:\s*([^;]*)/mi', $output, $cookie);
parse_str($cookie[1], $cookie);
echo $cookie["xf_session"].'<br>'.$output;
?>
问候
答案 0 :(得分:1)
您需要使用CURLOPT_COOKIEJAR
和CURLOPT_COOKIEFILE
。
curl_setopt($handle, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($handle, CURLOPT_COOKIEFILE, 'cookie.txt');
这会将所有Cookie保留在cookie.txt
中,并且在发出新请求时,Cookie将从同一cookie.txt
个文件中获取。这样,您就可以在连续的HTTP请求上维护会话。
答案 1 :(得分:0)
如果您想要保持登录状态,请在登录后的所有curl请求中使用相同的Cookie文件。