/**

*  post数据

*  @param string $url        post的url

*  @param int $limit        返回的数据的长度

*  @param string $post        post数据,字符串形式username='dalarge'&password='123456'

*  @param string $cookie    模拟 cookie,字符串形式username='dalarge'&password='123456'

*  @param string $ip        ip地址

*  @param int $timeout        连接超时时间

*  @param bool $block        是否为阻塞模式

*  @return string            返回字符串

*/

private function _ps_post($url, $limit = 0, $post = '', $cookie = '', $ip = '', $timeout = 15, $block = true) {

$return = '';

$matches = parse_url($url);

$host = $matches['host'];

$path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/';

$port = !empty($matches['port']) ? $matches['port'] : 80;

$siteurl = $this->_get_url();

if($post) {

$out = "POST $path HTTP/1.1\r\n";

$out .= "Accept: */*\r\n";

$out .= "Referer: ".$siteurl."\r\n";

$out .= "Accept-Language: zh-cn\r\n";

$out .= "Content-Type: application/x-www-form-urlencoded\r\n";

$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";

$out .= "Host: $host\r\n" ;

$out .= 'Content-Length: '.strlen($post)."\r\n" ;

$out .= "Connection: Close\r\n" ;

$out .= "Cache-Control: no-cache\r\n" ;

$out .= "Cookie: $cookie\r\n\r\n" ;

$out .= $post ;

} else {

$out = "GET $path HTTP/1.1\r\n";

$out .= "Accept: */*\r\n";

$out .= "Referer: ".$siteurl."\r\n";

$out .= "Accept-Language: zh-cn\r\n";

$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";

$out .= "Host: $host\r\n";

$out .= "Connection: Close\r\n";

$out .= "Cookie: $cookie\r\n\r\n";

}

$fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);

if(!$fp) return '';

stream_set_blocking($fp, $block);

stream_set_timeout($fp, $timeout);

@fwrite($fp, $out);

$status = stream_get_meta_data($fp);

if($status['timed_out']) return '';

while (!feof($fp)) {

if(($header = @fgets($fp)) && ($header == "\r\n" ||  $header == "\n"))  break;

}

$stop = false;

while(!feof($fp) && !$stop) {

$data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit));

$return .= $data;

if($limit) {

$limit -= strlen($data);

$stop = $limit <= 0;

}

}

@fclose($fp);

//部分虚拟主机返回数值有误,暂不确定原因,过滤返回数据格式

$return_arr = explode("\n", $return);

if(isset($return_arr[1])) {

$return = trim($return_arr[1]);

}

unset($return_arr);

return $return;

}

转载于:https://my.oschina.net/jyb2014/blog/366595

fsockopen封装相关推荐

  1. php fsockopen socket,基于php socket(fsockopen)的应用实例分析

    fsockopen函数能够运用,首先要开启php.ini中的allow_url_open=on; fsockopen是对socket客户端代码的封装,该函数中封装了socket_create,sock ...

  2. php fsockopen socket,PHP利用socket(fsockopen)的简单示例

    这篇文章主要为大家详细介绍了PHP利用socket(fsockopen)的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小玲来看看吧!fsockopen函数 ...

  3. php psockopen,基于php socket(fsockopen)的应用实例分析

    fsockopen函数能够运用,首先要开启php.ini中的allow_url_open=on; fsockopen是对socket客户端代码的封装,该函数中封装了socket_create,sock ...

  4. IDEA中将代码块封装为方法,IDEA代码重构快捷键

    IDEA中将代码块封装为方法 选中要转换的代码块,快捷键: Windows快捷键:Alt + Shift + M Mac快捷键:Alt + Command + M 如图:

  5. 2022-2028年中国封装用胶膜行业运营现状及投资发展潜力报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了封装用胶膜行业相关概述.中国封装用胶膜行业运行环境.分析了中国封装用 ...

  6. 第十六节,使用函数封装库tf.contrib.layers

    目录 一 tf.contrib.layers中的具体函数介绍 1.tf.contrib.layers.conv2d()函数的定义如下: 2.tf.contrib.layers.max_pool2d() ...

  7. 薄膜封装,等离子体技术,原子层沉积,化学气相沉积

    薄膜封装,等离子体技术,原子层沉积,化学气相沉积 薄膜封装 薄膜封装概念 薄膜真空沉积的一个很重要的技术应用就是薄膜封装.人们对薄膜封装最简单的认识就是日常生活中最常见的保鲜膜,水氧渗透率大约是1-1 ...

  8. 为什么要使用Retrofit封装OkHttp,而不单独使用OkHttp?

    OkHttp的优点: 开源的轻量级框架.高效.快速的请求客户端,可以单独使用它来实现网络请求. 支持SPDY: 支持连接池,可极大减少延时: 支持Gzip压缩响应体,降低传输内容的大小: 支持Http ...

  9. Python Day26:多态、封装、内置函数:__str__、__del__、反射(反省)、动态导入模块...

    ## 多态 ```python OOP中标准解释:多个不同类型对象,可以响应同一个方法,并产生不同结果,即为多态 多态好处:只要知道基类使用方法即可,不需要关心具体哪一个类的对象实现的,以不变应万变, ...

最新文章

  1. 脑机交互研究及标准化实践
  2. 自定义滚动条CSS样式
  3. zabbix—自动发现端口并监控
  4. 美国量子计算机能编程吗,世界首台可编程通用量子计算机美国问世
  5. StringIO类的用途
  6. Percona XtraDB Cluster 集群参数配置说明(PXC 5.7)
  7. Excel导入到sql数据库中完整代码
  8. Netty工作笔记0054---EventLoop组件
  9. Ubuntu中DenyHosts清除黑名单IP地址
  10. stl之string类用法详细总结
  11. 专业管理系统-包含VB源代码(数据库)
  12. vue json 编辑组件_内置为Vue组件的Visual JSON编辑器
  13. ubuntu-PyV8安装(网盘资源)
  14. opencv学习笔记(一) 环境配置/打开一张图片/github(git)初探
  15. 哪吒故里之争:讲好地方故事,真这么难?
  16. 【python爬虫笔记】验证码
  17. 昆虫大战电子计算机软件,风雨的昆虫大战AI双图版
  18. 2021年6月大学英语六级翻译
  19. 手写一个栈 java,数据结构|用java自己手写实现一个栈
  20. 实用交互设计工具大盘点

热门文章

  1. 图片另存为.rar 可以解压出来东西实现方法
  2. 苹果刘海高度_苹果如何将针对性广告的战争推向新的高度
  3. Android AlertDialog样式调整
  4. python:pydoc --- 文档生成器和在线帮助系统
  5. MMD在K帧的时候如何避免滑步
  6. 2014欢聚时代(YY)软件研发笔试题
  7. 连接Oracle提示12154
  8. word2vec学习笔记2
  9. redis删除某个前缀的key
  10. thinkphp6路由配置