ホームページ  >  記事  >  バックエンド開発  >  php_PHP チュートリアルでリモート画像を保存する

php_PHP チュートリアルでリモート画像を保存する

WBOY
WBOYオリジナル
2016-07-13 17:07:10893ブラウズ

php はリモート画像を保存します。次のコードは私が書いたものですが、サーバー上に画像を保存する成功率があまり高くないことが最終的にわかりました。 theft, read 以下のコードは自分で書いたものですが、file_get_contents を使って画像を取得するのに成功率があまり高くないことが分かりました。ホストに盗難防止機能がある場合は、読んでください。ホストを欺く方法は、fsockopen を使用してユーザー パケットをホストに送信することです

関数 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); $ファイル時間 = 時間(); !is_dir($img_path) : null; $filename = date("YmdHis",$filetime).rand(1,999).'.'.substr($value,-3,3); if(空($get_file)){
睡眠(3);
$get_file = @file_get_contents($value); If(空($get_file)){
$body = preg_replace("/".addcslashes($value,"/")."/isU", 'http://www.111cn.cn/notfound.jpg', $body);
続けてください;
}
}
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);
睡眠(1);
}

//$body =str_replace(' $body を返します;

}

fsockopen メソッドを見てみましょう。

if($gcookie=="" && !empty($rfurl)) $gcookie = RefurlCookie($rfurl);
$sessionQuery = "GET $gquery HTTP/1.1rn";
$sessionQuery .= "ホスト: $ghostrn";
$sessionQuery .= "リファラー: $rfurlrn";
$sessionQuery .= "受け入れる: */*rn";
$sessionQuery .= "ユーザーエージェント: Mozilla/4.0 (互換性; MSIE 5.00; Windows 98)rn";

if($gcookie!=""&&!ereg("[rn]",$gcookie)) $sessionQuery .= $gcookie."rn";

$sessionQuery .= "接続: Keep-Alivernrn";

$errno = "";

$errstr = "";
$url ='http://www.moko.cc';
$m_fp = fsockopen($url,80,$errno,$errstr,10);
fwrite($m_fp,$sessionQuery);


関数 RefurlCookie($gurl){
 グローバル $gcookie,$lastRfurl;
 $gurl = トリム($gurl);
 if(!empty($gcookie) && $lastRfurl==$gurl) return $gcookie;
 else $lastRfurl=$gurl;
 if(trim($gurl)=='') return '';
 $urlinfos = GetHostInfo($gurl);
  $ghost = $urlinfos['ホスト'];
  $gquery = $urlinfos['クエリ'];
  $sessionQuery = "GET $gquery HTTP/1.1rn";
  $sessionQuery .= "ホスト: $ghostrn";
  $sessionQuery .= "受け入れる: */*rn";
  $sessionQuery .= "ユーザーエージェント: Mozilla/4.0 (互換性; MSIE 5.00; Windows 98)rn";
  $sessionQuery .= "接続: Closernrn";
  $errno = "";
  $errstr = "";
  $m_fp = fsockopen($ghost, 80, $errno, $errstr,10) または die($ghost.'
');
  fwrite($m_fp,$sessionQuery);
  $lnum = 0;
  //获取详细应答头
  $gcookie = "";
 while(!feof($m_fp)){
   $line = トリム(fgets($m_fp,256));
   if($line == "" || $lnum>100) ブレーク;
   他{
    if(エレギ("^クッキー",$line)){
     $gcookie = $line;
     休憩;
    }
   }
  }
   fclose($m_fp);
   }
  このような言葉は、写真が盗まれた親機の写真を保存することができます。

http://www.bkjia.com/PHPjc/630485.html

tru​​ehttp://www.bkjia.com/PHPjc/630485.html技術記事 php 保存経過図片、次段代序は我自己書的、但し有一问题就在服务器保存图片的成功不成功很高、我用的是file_get_contents 取得、最後...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。