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 相关文章推荐
经典的PHPer为什么被认为是草根?
Apr 02 PHP
php学习 字符串课件
Jun 15 PHP
php获取url字符串截取路径的文件名和扩展名的函数
Jan 22 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
Feb 22 PHP
PHP资源管理框架Assetic简介
Jun 12 PHP
PHP实现操作redis的封装类完整实例
Nov 14 PHP
php生成图片验证码的方法
Apr 15 PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 PHP
php一个文件搞定微信jssdk配置
Dec 12 PHP
php使用PDO获取结果集的方法
Feb 16 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 PHP
laravel框架使用极光推送消息操作示例
Feb 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
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
2014/01/17 PHP
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
jQuery使用addClass()方法给元素添加多个class样式
2015/03/26 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
2017/08/25 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
2019/05/20 Javascript
微信小程序Echarts覆盖正常组件问题解决
2019/07/13 Javascript
JS多个异步请求 按顺序执行next实现解析
2019/09/16 Javascript
微信小程序全局变量的设置、使用、修改过程解析
2019/09/24 Javascript
JavaScript实现HSL拾色器
2020/05/21 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
原生js实现九宫格拖拽换位
2021/01/26 Javascript
[04:41]2014DOTA2国际邀请赛 Liquid顺利突围晋级正赛
2014/07/09 DOTA
python实现爬虫下载漫画示例
2014/02/16 Python
Python实现备份文件实例
2014/09/16 Python
Python实现图像几何变换
2015/07/06 Python
python学习教程之使用py2exe打包
2017/09/24 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
青年文明号服务承诺
2014/03/31 职场文书
2014年学生资助工作总结
2014/12/18 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers
理解python中装饰器的作用
2021/07/21 Python
原生JS实现分页
2022/04/19 Javascript
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python