简单的cURL脚本不检索数据

时间:2011-06-16 12:31:58

标签: php curl

我刚刚开始学习cURL,现在我只是尝试各种各样的东西来习惯cURL给我的选项。这是一个简单的脚本,用于连接和检索当前站点的数据

<?php

      $ch=curl_init();
      $header[] = "Cache-Control: max-age=0";
      $header[] = "Connection: keep-alive";
      $header[] = "Keep-Alive: 300";
      $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
      $header[] = "Accept-Language: en-us,en;q=0.5";
      $header[] = "Pragma: "; // browsers keep this blank.
      curl_setopt($ch, CURLOPT_URL, "http://img2.somesite.net/bitbucket/");
      curl_setopt($ch, CURLOPT_HEADER, $header);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      $a=curl_exec($ch);
      curl_close($ch);
      echo $a;

?>

我想把图像存储在那里,但显然我想念一些东西。我不知道应该怎么做。当你写http://img2.somesite.net/bitbucket/pic.jpg图像被加载时。我想得到所有的名字在那里的文件,或者我应该触发一个命令,它将下载图像,然后在PC上检查它们......我不知道这可能用cURL和hwo可以完成吗?   当我离开时

http://somesite.net/

我得到了资源,所以基本上这可行...

谢谢

Leron

2 个答案:

答案 0 :(得分:1)

尝试设置User-Agent,因为有些网站会在没有用户代理的情况下阻止请求。

此外,下载firefox的防篡改数据,并在您从浏览器启动下载时查看发送到服务器的邮件头。从卷曲中模仿所有的标题,这样就可以了。

多数民众赞成我是如何做到的。

答案 1 :(得分:0)

CURLOPT_HEADER是一个布尔值,用于确定是否应返回请求的标头。 要将标头传递给cURL,您应该使用CURLOPT_HTTPHEADER。

这应该可以正常工作:

<?php
      $ch=curl_init();
      $header[] = "Cache-Control: max-age=0";
      $header[] = "Connection: keep-alive";
      $header[] = "Keep-Alive: 300";
      $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
      $header[] = "Accept-Language: en-us,en;q=0.5";
      $header[] = "Pragma: "; // browsers keep this blank.
      curl_setopt($ch, CURLOPT_URL, "http://img2.somesite.net/bitbucket/");
      curl_setopt($ch, CURLOPT_HEADER, false);
      curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      $a=curl_exec($ch);
      curl_close($ch);
      echo $a;
?>