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&amp;&amp;mysql)一
Oct 09 PHP
php cookis创建实现代码
Mar 16 PHP
input file获得文件根目录简单实现
Apr 26 PHP
基于php权限分配的实现代码
Apr 28 PHP
apache配置虚拟主机的方法详解
Jun 17 PHP
PHP入门之常量简介和系统常量
May 12 PHP
修改destoon会员公司的伪静态中的com目录的方法
Aug 21 PHP
php中simplexml_load_file函数用法实例
Nov 12 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
Jan 11 PHP
快速解决PHP调用Word组件DCOM权限的问题
Dec 27 PHP
Laravel推荐使用的十个辅助函数
May 10 PHP
laravel 操作数据库常用函数的返回值方法
Oct 11 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 fread()使用技巧
2010/01/22 PHP
php类中private属性继承问题分析
2012/11/01 PHP
深入PHP5中的魔术方法详解
2013/06/17 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
2018/05/16 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
js 对象是否存在判断
2009/07/15 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
点击进行复制的JS代码实例
2013/08/23 Javascript
javascript函数特点实例分析
2015/05/14 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
javascript实现移动端上的触屏拖拽功能
2016/03/04 Javascript
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
JS实现的五级联动菜单效果完整实例
2017/02/23 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
python爬虫爬取淘宝商品信息(selenum+phontomjs)
2018/02/24 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
对Python信号处理模块signal详解
2019/01/09 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
银行自荐信范文
2013/10/07 职场文书
金融学专科生自我鉴定
2014/02/21 职场文书
公司合并协议书范本
2014/09/30 职场文书
杭州西湖英语导游词
2015/02/03 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
用position:sticky完美解决小程序吸顶问题的实现方法
2021/04/24 HTML / CSS
vue基于Teleport实现Modal组件
2021/05/31 Vue.js
Oracle创建只读账号的详细步骤
2021/06/07 Oracle
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电
Nginx 502 bad gateway错误解决的九种方案及原因
2022/08/14 Servers