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下关于中英数字混排的字符串分割问题
Apr 06 PHP
PHP中Memcache操作类及用法实例
Dec 12 PHP
php实现获取文件mime类型的方法
Feb 11 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
Apr 07 PHP
PHP在线书签系统分享
Jan 04 PHP
YII CLinkPager分页类扩展增加显示共多少页
Jan 29 PHP
php登录超时检测功能实例详解
Mar 21 PHP
详解php 使用Callable Closure强制指定回调类型
Oct 26 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 PHP
PHP实现提高SESSION响应速度的几种方法详解
Aug 09 PHP
TP5框架实现的数据库备份功能示例
Apr 05 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+Html+缓存
2006/12/20 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
封装的原生javascript弹出层代码
2010/09/24 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
jQuery的context属性用法实例
2014/12/27 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
2016/06/22 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
原生JS实现跑马灯效果
2017/02/20 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
2019/12/04 Javascript
详解微信小程序(Taro)手动埋点和自动埋点的实现
2021/03/02 Javascript
Java编程迭代地删除文件夹及其下的所有文件实例
2018/02/10 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
python仿抖音表白神器
2019/04/08 Python
学习python分支结构
2019/05/17 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
python离线安装外部依赖包的实现
2020/02/13 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
Matplotlib配色之Colormap详解
2021/01/05 Python
Html5踩坑记之mandMobile使用小记
2020/04/02 HTML / CSS
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
汽车专业人才自我鉴定范文
2013/12/29 职场文书
小班重阳节活动方案
2014/02/08 职场文书
教师职业道德事迹材料
2014/08/18 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
六一儿童节标语
2014/10/08 职场文书
民事诉讼代理词
2015/05/25 职场文书
公司环境卫生管理制度
2015/08/05 职场文书
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python
Python实现照片卡通化
2021/12/06 Python
Java 写一个简单的图书管理系统
2022/04/26 Java/Android