`
cyf1234
  • 浏览: 9325 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

对于未扩展file_get_content的服务器的自写类的解决方法

php 
阅读更多

面对一些因为各种各样原因而未扩展file_get_content功能的服务器。是不是有些头疼。下面给大家贴出一个类,可以解决这个问题。调用方法跟file_get_content一样。

可以如下调用:

//$result = HttpUtil::DoGet('http://www.baidu.com');
//echo($result);

**************************以下为code***********************************************

<?php
class HttpUtil{

 public static function DoGet($url){
  $url2 = parse_url($url);
  //var_dump($url2);
  $url2["path"] = (!isset($url2["path"])  || $url2["path"] == "" ? "/" : $url2["path"]);
  $url2["port"] = (!isset($url2["port"]) || $url2["port"] == "" ? 80 : $url2["port"]);
  $host_ip = @gethostbyname($url2["host"]);
  $fsock_timeout = 2;  //2 second
  if(($fsock = fsockopen($host_ip, $url2['port'], $errno, $errstr, $fsock_timeout)) < 0){
   return false;
  }
  $request =  $url2["path"] .(isset($url2["query"]) ? "?".$url2["query"] : "");
  $in  = "GET " . $request . " HTTP/1.0\r\n";
  $in .= "Accept: */*\r\n";
  $in .= "User-Agent: Payb-Agent\r\n";
  $in .= "Host: " . $url2["host"] . "\r\n";
  $in .= "Connection: Close\r\n\r\n";
  if(!@fwrite($fsock, $in, strlen($in))){
   fclose($fsock);
   return false;
  }
  return self::GetHttpContent($fsock);
 }

 public static function GetHttpContent($fsock=null) {
  $out = null;
  while($buff = @fgets($fsock, 2048)){
   $out .= $buff;
  }
  fclose($fsock);
  $pos = strpos($out, "\r\n\r\n");
  $head = substr($out, 0, $pos);    //http head
  $status = substr($head, 0, strpos($head, "\r\n"));    //http status line
  $body = substr($out, $pos + 4, strlen($out) - ($pos + 4));//page body
  if(preg_match("/^HTTP\/\d\.\d\s([\d]+)\s.*$/", $status, $matches)){
   if(intval($matches[1]) / 100 == 2){
    return $body; 
   }else{
    return false;
   }
  }else{
   return false;
  }
 }


}

?>

分享到:
评论

相关推荐

    file_get_contents获取不到网页内容的解决方法

    此外,对于超时问题,`file_get_contents` 有一个名为`ini_set('default_socket_timeout', $seconds)` 的设置,可以用来调整超时时间,而cURL则直接通过`CURLOPT_CONNECTTIMEOUT` 进行控制。如果遇到`file_get_...

    PHP中使用file_get_contents抓取网页中文乱码问题解决方法

    解决这个问题的一种方法是使用 `cURL` 库代替 `file_get_contents`。`cURL` 提供了更丰富的配置选项,可以处理 GZIP 压缩。在 `cURL` 设置中,添加 `CURLOPT_ENCODING` 参数,并将其值设为 `"gzip"`,如下所示: ``...

    解决file_get_contents无法请求https连接的方法

    如果您无法修改服务器配置,或者上述方法不适用,您可以选择使用cURL库来代替 `file_get_contents`。cURL是一个强大的URL传输库,支持多种协议,包括HTTPS。下面是一个使用cURL的示例函数 `http_request`,它封装了...

    PHP中file_get_contents高級用法实例

    在此文档中,提到有两种方法可以解决file_get_contents的超时问题。 一种方法是通过增加超时的时间限制。文档中指出,set_time_limit()函数并不影响file_get_contents的执行超时,因为它仅仅是设置PHP脚本执行的总...

    PHP curl 或 file_get_contents 获取需要授权页面的方法

    今天因工作需要,需要用 curl / file_get_contents 获取需要授权(Authorization)的页面内容,解决后写了这篇文章分享给大家。 PHP curl 扩展,能够在服务器端发起POST/GET请求,访问页面,并能获取页面的返回数据。 ...

    执行、获取远程代码返回:file_get_contents 超时处理的问题详解

    总的来说,当遇到 `file_get_contents()` 的超时问题时,可以尝试通过设置 `context` 参数或者切换到 cURL 扩展库来解决。cURL 提供了更多的灵活性和控制权,尤其是在处理远程资源时,它通常被视为更可靠的选择。...

    php中file_get_contents与curl性能比较分析

    举例来说,当尝试从远程服务器获取数据时,使用`file_get_contents`可能遇到超时问题,即使设置了超时限制也可能不生效。此时,切换到`curl`,通过`curl_setopt`设置超时、用户代理等参数,可以显著提高稳定性和成功...

    服务器无法发邮件的问题彻底解决了

    ### 服务器无法发邮件的问题彻底解决了 在日常的网站运营及维护过程中,我们经常会遇到一些棘手的技术问题,其中服务器无法发送邮件就是一种常见的故障。本文将详细介绍如何在服务器已经屏蔽了所有发邮件函数的情况...

    通过api上传文件

    $file_content = file_get_contents($file_path); $file_size = filesize($file_path); $file_type = mime_content_type($file_path); $post_data = array( 'file' =&gt; base64_encode($file_content), 'filename' ...

    file_sync.zip

    try (WatchService watcher = FileSystems.getDefault().newWatchService()) { directory.register(watcher, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_DELETE, ...

    ex组装维修的好东西

    - **解决方法**: - 检查URL是否正确且可达。 - 确保目标服务器正常运行并能响应请求。 - 检查网络连接状态。 - 在PHP.ini中开启`allow_url_fopen` 设置,允许通过URL访问文件。 - 使用异常处理机制来捕获和处理...

    nginx_upload_module 加lua 实现上传

    local file_info = ngx.req.get_post_args() local file_name = file_info["upload_field_name"]["name"] local file_size = tonumber(file_info["upload_field_name"]["size"]) local file_path = file_info[...

    PHP获取网页内容的方法宣贯.pdf

    这里介绍六种不同的方法: 1. **file_get_contents**:这是最简单的获取网页内容的方法,适合基本需求。例如: ...在使用这些方法时,记得检查服务器配置(如cURL扩展)和处理可能出现的错误情况。

    php读取eml实例、php解析eml、eml解析成网页

    $email_content = file_get_contents($file); // 2. 使用PHP的mailparse扩展解析EML if (function_exists('mailparse_msg_parse')) { $parsed_message = mailparse_msg_parse($email_content); $structure = ...

    PHPOK最新版漏洞组合拳GETSHELL1

    PHPOK系统的GETSHELL1漏洞通过利用缓存类的不当设计以及对`file_put_contents`函数的不安全使用,使得攻击者能够绕过安全措施并在服务器上执行任意代码。此外,反序列化漏洞也为攻击者提供了额外的攻击途径。对于...

    cgic.rar_cgic

    CGIC(Common Gateway Interface C Library)是一个开源的C语言库,专门为Web服务器上的CGI(Common Gateway Interface)程序设计...它极大地简化了Web服务器与外部程序之间的交互,促进了Web服务的灵活性和可扩展性。

    sms.zip_php post_php post 接口_sms

    对于简单的POST请求,还可以使用file_get_contents函数配合stream_context_create创建一个上下文来实现: ```php $data = array('param1' =&gt; 'value1', 'param2' =&gt; 'value2'); $options = array('http' =&gt; array('...

Global site tag (gtag.js) - Google Analytics