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模板的朋友必看的很多个顶级PHP模板引擎比较分析
May 26 PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
Jul 28 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
Aug 10 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
Aug 21 PHP
CodeIgniter中使用Smarty3基本配置
Jun 29 PHP
php实现可逆加密的方法
Aug 11 PHP
PHP7新特性foreach 修改示例介绍
Aug 26 PHP
php获取开始与结束日期之间所有日期的方法
Nov 29 PHP
Laravel框架实现利用中间件进行操作日志记录功能
Jun 06 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 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脚本的10个技巧(1)
2006/10/09 PHP
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
一个图形显示IP的PHP程序代码
2007/10/19 PHP
2个Codeigniter文件批量上传控制器写法例子
2014/07/25 PHP
php实现session自定义会话处理器的方法
2015/01/27 PHP
php链表用法实例分析
2015/07/09 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
全面解读PHP的Yii框架中的日志功能
2016/03/17 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
js日期时间补零的小例子
2013/03/05 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
原生js实现倒计时--2018
2017/02/21 Javascript
Bootstrap table使用方法记录
2017/08/23 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
微信小程序实现的自定义分享功能示例
2019/02/12 Javascript
JavaScript箭头函数中的this详解
2019/06/19 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
python导出chrome书签到markdown文件的实例代码
2017/12/27 Python
python中的字符串内部换行方法
2018/07/19 Python
python装饰器练习题及答案
2019/11/01 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
PyCharm常用配置和常用插件(小结)
2021/02/06 Python
NHL官方在线商店:Shop.NHL.com
2020/05/01 全球购物
中学生差生评语
2014/01/30 职场文书
光棍节联谊晚会活动策划书
2014/10/10 职场文书
可可西里观后感
2015/06/08 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript