php中用socket模拟http中post或者get提交数据的示例代码


Posted in PHP onAugust 08, 2013

废话不多说。直接上代码:
sock_post.php:

<?php
function sock_post($url, $data='') {
  $url = parse_url($url);
  $url['scheme'] || $url['scheme'] = 'http';
  $url['host'] || $url['host'] = $_SERVER['HTTP_HOST'];
  $url['path'][0] != '/' && $url['path'] = '/'.$url['path'];
  $query = $data;
  if(is_array($data)) $query = http_build_query($data);
  $fp = @fsockopen($url['host'], $url['port'] ? $url['port'] : 80);
  if (!$fp) return "Failed to open socket to $url[host]";
  fputs($fp, sprintf("POST %s%s%s HTTP/1.0/n", $url['path'], $url['query'] ? "?" : "", $url['query']));
  fputs($fp, "Host: $url[host]/n");
  fputs($fp, "Content-type: application/x-www-form-urlencoded/n");
  fputs($fp, "Content-length: " . strlen($query) . "/n");
  fputs($fp, "Connection: close/n/n");
  fputs($fp, "$query/n");
  $line = fgets($fp,1024);
  if (@!eregi("^HTTP/1/.. 200", $line))  return;
  $results = ""; 
  $inheader = 1;
  while(!feof($fp)) {
    $line = fgets($fp,1024);
    if ($inheader && ($line == "/n" || $line == "/r/n")) {
      $inheader = 0;
    }elseif (!$inheader) {
      $results .= $line;
    }
  }
  fclose($fp);
  return $results;
}
 $re = sock_post('http://localhost/direct_post/get_post.php?id=1',array('wel'=>'hello'));
 echo $re;
?>

get_post.php:
<?php
echo "post:";
print_r($_POST);
echo 'get:';
print_r($_GET);
?>
PHP 相关文章推荐
实现树状结构的两种方法
Oct 09 PHP
学习php笔记 字符串处理
Oct 19 PHP
使用配置类定义Codeigniter全局变量
Jun 12 PHP
主流PHP框架的优缺点对比分析
Dec 25 PHP
php强制更新图片缓存的方法
Feb 11 PHP
php使用APC实现实时上传进度条功能
Oct 26 PHP
PHP正则表达式之捕获组与非捕获组
Nov 06 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
Nov 11 PHP
WordPress中调试缩略图的相关PHP函数使用解析
Jan 07 PHP
php实现生成验证码实例分享
Apr 10 PHP
PHP中strpos、strstr和stripos、stristr函数分析
Jun 11 PHP
Laravel 实现密码重置功能
Feb 23 PHP
浅析php变量作用域的一些问题
Aug 08 #PHP
解析php开发中的中文编码问题
Aug 08 #PHP
php中jpgraph类库的使用介绍
Aug 08 #PHP
浅析php与数据库代码开发规范
Aug 08 #PHP
九个你必须知道而且又很好用的php函数和特点
Aug 08 #PHP
怎样使用php与jquery设置和读取cookies
Aug 08 #PHP
如何取得中文字符串中出现次数最多的子串
Aug 08 #PHP
You might like
php获取字符串中各个字符出现次数的方法
2015/02/23 PHP
PHP读取大文件末尾N行的高效方法推荐
2016/06/03 PHP
PHP两种实现无级递归分类的方法
2017/03/02 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
ASP 过滤数组重复数据函数(加强版)
2010/05/31 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
weex里Vuex state使用storage持久化详解
2017/09/09 Javascript
Angular4学习笔记router的简单使用
2018/03/30 Javascript
详解Axios 如何取消已发送的请求
2018/10/20 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
vue解决跨域问题(推荐)
2020/11/10 Javascript
js实现简单的轮播图效果
2020/12/13 Javascript
Python函数参数类型*、**的区别
2015/04/11 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
python实现linux下抓包并存库功能
2018/07/18 Python
python三引号输出方法
2019/02/27 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
Python restful框架接口开发实现
2020/04/13 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
Python数据可视化实现漏斗图过程图解
2020/07/20 Python
python属于哪种语言
2020/08/16 Python
Alpine安装Python3依赖出现的问题及解决方法
2020/12/25 Python
检测用户浏览器是否支持CSS3的方法
2009/08/29 HTML / CSS
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题
大学系主任推荐信范文
2013/12/24 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
学校领导四风问题整改措施思想汇报
2014/10/09 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
罗马假日观后感
2015/06/08 职场文书
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server