所以我有一个脚本,通过一个URL作为get参数传递,因此试图将该页面的内容写入文件。在未经过验证的页面上,它工作正常,但当我尝试在需要验证的页面上使用它时,它会中断。PHP cURL到已经登录的认证站点
具体来说,这些是我已经登录到的页面,所以我假定做一个标准的cURL请求,所有我当前设置的cookie都可以工作,但事实并非如此。最初,我收到了一个302响应,但如果将'FOLLOWLOCATION'设置为true,我最终会在该网站的登录页面而不是我想要的页面。
$client = curl_init();
//curl_setopt($client, CURLOPT_HEADER, true);
curl_setopt($client, CURLOPT_RETURNTRANSFER, true);
curl_setopt($client, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($client, CURLOPT_URL, $pageToLoad);
/* Supposedly libcurl loads all cookies auto-magically if you don't set CURL_COOKIESESSION
if (isset($_SERVER['HTTP_COOKIE'])) {
curl_setopt($client, CURLOPT_COOKIE, $_SERVER['HTTP_COOKIE']);
}
*/
$response = curl_exec($client);
curl_close($client);
我有我需要设置一个cookiejar文件,这个工作(“下沉”,因为我的脚本没有开发服务器上的写权限)下沉的感觉,但你有什么想法?
编辑: 那么,是那种白痴的,原来我有一些写访问......反正,我的主目录,在那里我已经验证了我的脚本可以写做了一个临时文件夹:
$fname = '/home/temp/cookies.txt';
if($save = fopen($fname, 'w')) {
fwrite($save, 'testing');
}
运行脚本,然后低下,'测试'出现在第一行。
我已经添加了下面两行到我的卷曲要求:
curl_setopt($ch, CURLOPT_COOKIEJAR, '/home/temp/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/home/temp/cookies.txt');
并没有什么在我的情况已经改变。 cookies.txt文件仍然只是说'测试',并没有存储任何cookie,'最后访问'时间也没有改变,这对我来说意味着这些行不做任何事情。
还有什么想法?我有点难过:\
是的,如果您希望这种验证形式正常工作,您需要使用提供给您的任何cookie进行所有后续请求。 – Brad
你有权访问请求服务器的源? – bensiu
不,我没有访问请求的服务器 – wolv2012