如何在带有cookie的远程页面上下载php curl?
更新的脚本 我正在尝试登录到网页并将会话保存在文本文件中 登录成功,如果需要,将我重定向到成员页面或其他页面 但是现在我需要下载一个带有curl的文件,服务器说致命错误:内存不足如何在带有cookie的远程页面上下载php curl?,php,curl,download,remote-access,Php,Curl,Download,Remote Access,更新的脚本 我正在尝试登录到网页并将会话保存在文本文件中 登录成功,如果需要,将我重定向到成员页面或其他页面 但是现在我需要下载一个带有curl的文件,服务器说致命错误:内存不足 ini_set("memory_limit","2048M"); //Limite 2GB set_time_limit(0); //Tiempo de transferencia ilimitada //Definimos las variables de la
ini_set("memory_limit","2048M"); //Limite 2GB
set_time_limit(0); //Tiempo de transferencia ilimitada
//Definimos las variables de la pagina
$username = "";
$password = "";
$loginUrl = 'http://login.mysite.com/login.php';
$loginFields = array('username' => $username, 'password' => $password);
//Ahora se ha iniciado la sesion y la sesion de la cookie ha sido generada
getUrl($loginUrl, 'post', $loginFields);
//Cargamos la pagina que queremos ver
$remote_page_content = getUrl('http://miembros.mysite.com/3098');
echo $remote_page_content;
//Simple funcion para acceder
function getUrl($url, $method='', $vars='')
{
$ch = curl_init();
if ($method == 'post')
{
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $vars);
}
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7");
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt ($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt ($ch, CURLOPT_TIMEOUT, 0);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt ($ch, CURLOPT_FAILONERROR, true);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
$buffer = curl_exec($ch);
curl_close ($ch);
return $buffer;
}
因此,我使用以下命令调用下载文件:
//Cargamos la pagina que queremos ver
$remote_page_content = getUrl('http://content.mysite.com/PSP.mp4/');
file_put_contents('/downloads/video.mp4',file_get_contents($remote_page_content));
有什么想法吗
谢谢请尝试替换以下行:
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookies);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookies);
对于这一个:
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
由于您似乎在变量中输入了一个错误,所以您希望文件名($cookie
)不是已经关闭的描述符($cookies
)。这在login()函数中
更新:
如果在一个会话中处理多个页面,请尝试添加以下内容:
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_COOKIE, session_name() . '=' . session_id());
第一次调用后cookie.txt中有什么?但是在这种模式下,cookie不存储在cookie文件中为什么不?你试过了?CURLOPT_COOKIEJAR和CURLOPT_COOKIEFILE需要一个文件名,这就是$cookie的文件名。您的问题可能是由于从同一个会话中获取多个页面,我已使用一些选项更新了我的答案,您可以尝试。我尝试了。但是没有在cookie.txt文件中写入任何东西,我的登录是正确的,但是我无法使用Cookies进行下载是的,但是我收到了一个错误标题,但是如果我放入curl_setopt($ch,CURLOPT_COOKIESESSION,true)代码>此操作不执行任何操作