网站建设知识

php读取远程文件的代码

发布:技术总监 | 发布时间:2013-01-09 08:59

在昨天做端口测试的基础上研究一下PHP上传与下载的代码,结果想起前段时间笔试题有一道题是在上传文件时显示文件内容,让我对PHP实现读取远程文件的功能很感兴趣,以下是代码:


function urlfopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE  , $ip = '', $timeout = 15, $block = TRUE, $encodetyp
e  = 'URLENCODE') {
02           $return = '';
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;
07  
08           if($post) {
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";
20             $out .= $post;
21           } else {
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";
30           }
31           $fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr,$timeout);
32           if(!$fp) {
33             return '';
34           } else {
35             stream_set_blocking($fp, $block);
36             stream_set_timeout($fp, $timeout);
37             @fwrite($fp, $out);
38             $status = stream_get_meta_data($fp);
39             if(!$status['timed_out']) {
40               while (!feof($fp)) {
41                 if(($header = @fgets($fp)) && ($header == "\r\n" ||  $header =="\n")) {
42                   break;
43                 }
44               }
45  
46               $stop = false;
47               while(!feof($fp) && !$stop) {
48                 $data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 :$limit));
49                 $return .= $data;
50                 if($limit) {
51                   $limit -= strlen($data);
52                   $stop = $limit <= 0;
53                 }
54               }
55             }
56             @fclose($fp);
57             return $return;
58           }
59         }

万唯科技作为唐山地区专业的网络服务提供商,已经为上百家企事业单位提供了网站建设网站制作、网站改版、域名注册、网站空间租用等服务,优质的服务得到了广大客户的一致认可,如果您有网站建设、网站改版、网站维护等方面的需求,请致电:0315-6723159,我们会根据您所从事的行业领域和网站类型,在最短的时间内请我们的营销顾问与您预约后上门拜访您,直接面谈交流为您解答所有的网站建设疑问。

网站建设知识

网站建设| 案例展示| 网站推广| 服务项目| 关于我们| 联系我们| 建站知识| 唐山网络公司博客
  • 热线电话: 0315-6723159
  • 传真:0315-6723159 邮箱:449324@qq.com
  • 公司地址:丰南区瑞景街18号金融中心3层
  • 乘车路线:乘坐80、88、89路车到“欣荣街市场(银丰市场)”站,即到。北方电子对面。
万唯科技最值得信赖的品牌-万唯网络品牌网站建设专家
Copyright © 2012-2013 0315www.com. 万唯科技 版权所有  ICP备案号:冀ICP备12021829号