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 相关文章推荐
php 数组排序 array_multisort与uasort的区别
Mar 24 PHP
PHP中break及continue两个流程控制指令区别分析
Apr 18 PHP
国产PHP开发框架myqee新手快速入门教程
Jul 14 PHP
php mb_substr()函数截取中文字符串应用示例
Jul 29 PHP
WordPress中邮件的一些修改和自定义技巧
Dec 15 PHP
PHP浮点比较大小的方法
Feb 14 PHP
PHP实现根据数组的值进行分组的方法
Apr 20 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
Dec 20 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
Jul 18 PHP
php的无刷新操作实现方法分析
Feb 28 PHP
阿里云服务器搭建Php+Apache运行环境的详细过程
May 15 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
《OVERLORD》手游英文版即将上线 手机上也能扮演骨王
2020/04/09 日漫
php的curl实现get和post的代码
2008/08/23 PHP
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
php邮件发送的两种方式
2020/04/28 PHP
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
js创建子窗口并且回传值示例代码
2013/07/02 Javascript
js通过更改按钮的显示样式实现按钮的滑动效果
2014/04/23 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
window.onload使用指南
2015/09/13 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
vue.draggable实现表格拖拽排序效果
2018/12/01 Javascript
es6基础学习之解构赋值
2018/12/10 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
[02:05]2014DOTA2国际邀请赛 BBC外卡赛赛后总结
2014/07/09 DOTA
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
Python for Informatics 第11章 正则表达式(一)
2016/04/21 Python
使用python读取csv文件快速插入数据库的实例
2018/06/21 Python
python argparser的具体使用
2019/11/10 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
pytorch中的weight-initilzation用法
2020/06/24 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
Python 如何查找特定类型文件
2020/08/17 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
HTML5的结构和语义(5):内嵌媒体
2008/10/17 HTML / CSS
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
一道SQL面试题
2012/12/31 面试题
Order by的几种用法
2013/06/16 面试题
怎样写留学自荐信
2013/11/11 职场文书
大学社团活动总结
2014/04/26 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
教师求职信怎么写
2015/03/20 职场文书
2015年环卫处个人工作总结
2015/07/27 职场文书
房屋买卖定金协议书
2016/03/21 职场文书