您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

php保存远程图片_PHP教程

2024/3/18 4:33:02发布21次查看
php保存远程图片,下面这段代码是我自己写的,但是有一个问题就是放在服务器就保存图片的成功不是很高,我用的是file_get_contents来取得,最后发现如果主机有防盗的就读取了
php保存远程图片,下面这段代码是我自己写的,但是有一个问题就是放在服务器就保存图片的成功不是很高,我用的是file_get_contents来取得,最后发现如果主机有防盗的就读取了,我们欺骗主机的方法来做,就是用fsockopen向主机发送一个用户包
function get_remote($body){
 set_time_limit(0);
 $img_array = array();
 $img_path = get_pic/;
 preg_match_all(/(src|src)=[|'| ]{0,}(http://(.*).(gif|jpg|jpeg|png))/isu,$body,$img_array);
 $img_array = array_unique($img_array[2]);
 foreach ($img_array as $key => $value) {
  $get_file = @file_get_contents($value);
  $filetime = time();   
  !is_dir($img_path) ? mkdir($img_path) : null; 
  $filename = date(ymdhis,$filetime).rand(1,999).'.'.substr($value,-3,3);
  if(empty($get_file)){
   sleep(3);
   $get_file = @file_get_contents($value);
   if(empty($get_file)){
    $body = preg_replace(/.addcslashes($value,/)./isu, 'http://www.111cn.cn/notfound.jpg', $body);
    continue;
    }
  }
  if(!empty($get_file) ){
   $fp = fopen($img_path.$filename,w);
   if(fwrite($fp,$get_file)){         
    $body = preg_replace(/.addcslashes($value,/)./isu, $img_path.$filename, $body);
   }
  }
  fclose($fp);
  sleep(1);
 }
//$body =str_replace(' //$body =str_replace(' return $body;
}
下面我们来看看fsockopen的方法喽.
if($gcookie== && !empty($rfurl)) $gcookie = refurlcookie($rfurl);
   $sessionquery = get $gquery http/1.1rn;
   $sessionquery .= host: $ghostrn;
   $sessionquery .= referer: $rfurlrn;
   $sessionquery .= accept: */*rn;
   $sessionquery .= user-agent: mozilla/4.0 (compatible; msie 5.00; windows 98)rn;
   if($gcookie!=&&!ereg([rn],$gcookie)) $sessionquery .= $gcookie.rn;
   $sessionquery .= connection: keep-alivernrn;
   $errno = ;
   $errstr = ;
$url ='http://www.moko.cc';
$m_fp = fsockopen($url,80,$errno,$errstr,10);
fwrite($m_fp,$sessionquery);
function refurlcookie($gurl){
 global $gcookie,$lastrfurl;
 $gurl = trim($gurl);
 if(!empty($gcookie) && $lastrfurl==$gurl) return $gcookie;
 else $lastrfurl=$gurl;
 if(trim($gurl)=='') return '';
 $urlinfos = gethostinfo($gurl);
  $ghost = $urlinfos['host'];
  $gquery = $urlinfos['query'];
  $sessionquery = get $gquery http/1.1rn;
  $sessionquery .= host: $ghostrn;
  $sessionquery .= accept: */*rn;
  $sessionquery .= user-agent: mozilla/4.0 (compatible; msie 5.00; windows 98)rn;
  $sessionquery .= connection: closernrn;
  $errno = ;
  $errstr = ;
  $m_fp = fsockopen($ghost, 80, $errno, $errstr,10) or die($ghost.'
');
  fwrite($m_fp,$sessionquery);
  $lnum = 0;
  //获取详细应答头
  $gcookie = ;
 while(!feof($m_fp)){
   $line = trim(fgets($m_fp,256));
   if($line == || $lnum>100) break;
   else{
    if(eregi(^cookie,$line)){
     $gcookie = $line;
     break;
    }
   }
  }
   fclose($m_fp);
   }
  哈这样的话就可以保存远程有图片防盗的主机的图片了喽.
http://www.bkjia.com/phpjc/630485.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/630485.htmltecharticlephp保存远程图片,下面这段代码是我自己写的,但是有一个问题就是放在服务器就保存图片的成功不是很高,我用的是file_get_contents来取得,最后...
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product