GULHTML5中文学习网 - HTML5先行者学习网
在昨天做端口测试的基础上研究一下PHP上传与下载的代码,结果想起前段时间笔试题有一道题是在上传文件时显示文件内容,让我对PHP实现读取远程文件的功能很感兴趣,以下是代码:GULHTML5中文学习网 - HTML5先行者学习网
| 01 | function urlfopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE , $ip = '', $timeout = 15, $block = TRUE, $encodetype = 'URLENCODE') { |
| 03 | $matches = parse_url($url); |
| 04 | $host = $matches['host']; |
| 05 | $path = $matches['path'] ? $matches['path'].(isset($matches['query']) ? '?'.$matches['query'] : '') : '/'; |
| 06 | $port = !empty($matches['port']) ? $matches['port'] : 80; |
| 09 | $out = "POST $path HTTP/1.0/r/n"; |
| 10 | $out .= "Accept: */*/r/n"; |
| 11 | $out .= "Accept-Language: zh-cn/r/n"; |
| 12 | $boundary = $encodetype == 'URLENCODE' ? '' : ';'.substr($post, 0, trim(strpos($post, "/n"))); |
| 13 | $out .= $encodetype == 'URLENCODE' ? "Content-Type: application/x-www-form-urlencoded/r/n" : "Content-Type: multipart/form-data$boundary/r/n"; |
| 14 | $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]/r/n"; |
| 15 | $out .= "Host: $host/r/n"; |
| 16 | $out .= 'Content-Length: '.strlen($post)."/r/n"; |
| 17 | $out .= "Connection: Close/r/n"; |
| 18 | $out .= "Cache-Control: no-cache/r/n"; |
| 19 | $out .= "Cookie: $cookie/r/n/r/n"; |
| 22 | $out = "GET $path HTTP/1.0/r/n"; |
| 23 | $out .= "Accept: */*/r/n"; |
| 24 | $out .= "Accept-Language: zh-cn/r/n"; |
| 25 | $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]/r/n"; |
| 26 | $out .= "Host: $host/r/n"; |
| 27 | $out .= "Referer: /r/n"; |
| 28 | $out .= "Connection: Close/r/n"; |
| 29 | $out .= "Cookie: $cookie/r/n/r/n"; |
| 31 | $fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr,$timeout); |
| 35 | stream_set_blocking($fp, $block); |
| 36 | stream_set_timeout($fp, $timeout); |
| 38 | $status = stream_get_meta_data($fp); |
| 39 | if(!$status['timed_out']) { |
| 41 | if(($header = @fgets($fp)) && ($header == "/r/n" $header =="/n")) { |
| 47 | while(!feof($fp) && !$stop) { |
| 48 | $data = fread($fp, ($limit == 0 $limit > 8192 ? 8192 :$limit)); |
| 51 | $limit -= strlen($data); |
GULHTML5中文学习网 - HTML5先行者学习网GULHTML5中文学习网 - HTML5先行者学习网