Gurl the picture address to download
$rfurl antecedents. If the target image does a burglar chain setting, you can bypass it.
$filename download picture saved file name, relative path, do not use Realpath
$gcookie to adjust cookie fake cookies
$JumpCount Jump Count
$maxtime maximum number of times
Call Method: Downimagekeep ("Baidu_jgylogo2.gif", "http://baidu.com", "A.gif", "", 0,10);
  
Copy Code  code as follows: 
 <?php 
 function Downimagekeep ($gurl, $rfurl, $filename, $gcookie = "", $JumpCount =0, $maxtime =30) 
 { 
 $urlinfos = GetHostInfo ($gurl); 
 $ghost = Trim ($urlinfos [' Host ']); 
 if ($ghost = = ") 
 { 
 return FALSE; 
 } 
 $gquery = $urlinfos [' query ']; 
 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) rn "; 
 if ($gcookie!= "" "&&!preg_match ("/[rn]/", $gcookie)) 
 { 
 $sessionQuery. = $gcookie. " RN "; 
 } 
 $sessionQuery. = "Connection:keep-alivernrn"; 
 $errno = ""; 
 $errstr = ""; 
 $m _fp = Fsockopen ($ghost, $errno, $ERRSTR, 10); 
 fwrite ($m _fp, $sessionQuery); 
 $lnum = 0; 
//Get detailed answer header 
 $m _httphead = Array (); 
 $httpstas = Explode ("", Fgets ($m _fp,256)); 
 $m _httphead["http-edition"] = Trim ($httpstas [0]); 
 $m _httphead["http-state"] = Trim ($httpstas [1]); 
 while (!feof ($m _fp)) 
 { 
 $line = Trim (fgets ($m _fp,256)); 
if ($line = = "" | | $lnum >100) 
 { 
 break; 
 } 
 $hkey = ""; 
 $hvalue = ""; 
 $v = 0; 
 for ($i =0; $i <strlen ($line); $i + +) 
 { 
 if ($v ==1) 
 { 
 $hvalue. = $line [$i]; 
 } 
 if ($line [$i]== ":") 
 { 
 $v = 1; 
 } 
 if ($v ==0) 
 { 
 $hkey. = $line [$i]; 
 } 
 } 
 $hkey = Trim ($hkey); 
 if ($hkey!= "") 
 { 
 $m _httphead[strtolower ($hkey)] = Trim ($hvalue); 
 } 
 } 
//Analysis return records 
 if (Preg_match ("/^3/", $m _httphead["Http-state")) 
 { 
 if (isset ($m _httphead["Location"]) && $JumpCount <3) 
 { 
 $JumpCount + +; 
Downimagekeep ($gurl, $rfurl, $filename, $gcookie, $JumpCount); 
 } 
 Else 
 { 
 return FALSE; 
 } 
 } 
 if (!preg_match ("/^2/", $m _httphead["Http-state")) 
 { 
 return FALSE; 
 } 
 if (!isset ($m _httphead)) 
 { 
 return FALSE; 
 } 
 $contentLength = $m _httphead[' content-length ']; 
//Save file 
 $fp = fopen ($filename, "w") or Die ("Write file: {$filename} failed!") "); 
 $i = 0; 
 $okdata = ""; 
 $starttime = time (); 
 while (!feof ($m _fp)) 
 { 
 $okdata. = fgetc ($m _fp); 
 $i + +; 
//Timeout End 
 if (Time ()-$starttime > $maxtime) 
 { 
 break; 
 } 
//Reach specified size end 
 if ($i >= $contentLength) 
 { 
 break; 
 } 
 } 
 if ($okdata!= "") 
 { 
 fwrite ($fp, $okdata); 
 } 
 fclose ($FP); 
 if ($okdata = = "") 
 { 
 @unlink ($filename); 
 fclose ($m _fp); 
 return FALSE; 
 } 
 fclose ($m _fp); 
 return TRUE; 
 } 
 /** 
 * Get the cookie information returned by a page 
 * 
 * @access Public 
 * @param string $gurl Adjust address 
 * @return String 
 */ 
 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) rn "; 
 $sessionQuery. = "Connection:closernrn"; 
 $errno = ""; 
 $errstr = ""; 
 $m _fp = Fsockopen ($ghost, $errno, $errstr, ten) or Die ($ghost. ' <br/> '); 
 fwrite ($m _fp, $sessionQuery); 
 $lnum = 0; 
//Get detailed answer header 
 $gcookie = ""; 
 while (!feof ($m _fp)) 
 { 
 $line = Trim (fgets ($m _fp,256)); 
if ($line = = "" | | $lnum >100) 
 { 
 break; 
 } 
 Else 
 { 
 if (Preg_match ("/^cookie/i", $line)) 
 { 
 $gcookie = $line; 
 break; 
 } 
 } 
 } 
 fclose ($m _fp); 
 return $gcookie; 
 } 
 /** 
 * Access to the host and query part of the URL 
 * 
 * @access Public 
 * @param string $gurl Adjust address 
 * @return String 
 */ 
 function GetHostInfo ($gurl) 
 { 
 $gurl = preg_replace ("/^http:///i", "", Trim ($gurl)); 
 $garr [' host '] = Preg_replace ("//(. *) $/i", "", $gurl); 
 $garr [' query '] = '/'. Preg_replace ("/^ ([^/]*)//i", "", $gurl); 
 return $garr; 
 } 
?>