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数据库操作面向对象的优点
Oct 09 PHP
建立动态的WML站点(一)
Oct 09 PHP
dedecms中常见问题修改方法总结
Mar 21 PHP
PHP 面向对象实现代码
Nov 11 PHP
php中判断文件存在是用file_exists还是is_file的整理
Sep 12 PHP
php的zip解压缩类pclzip使用示例
Mar 14 PHP
PHP小教程之实现链表
Jun 09 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
Dec 17 PHP
php版微信数据统计接口用法示例
Oct 12 PHP
PHP实现活动人选抽奖功能
Apr 19 PHP
PHP编译configure时常见错误的总结
Aug 17 PHP
PHP 数组黑名单/白名单实例代码详解
Jun 04 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 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
PHP 图片水印类代码
2012/08/27 PHP
PHP处理postfix邮件内容的方法
2015/06/16 PHP
php车辆违章查询数据示例
2016/10/14 PHP
javascript写的日历类(基于pj)
2010/12/28 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
探讨js中的双感叹号判断
2013/11/11 Javascript
用js一次改变多个input的readonly属性值的方法
2014/06/11 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
两行代码轻松搞定JavaScript日期验证
2016/08/03 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
2016/10/14 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
jquery.pager.js分页实现详解
2019/07/29 jQuery
vue中使用腾讯云Im的示例
2020/10/23 Javascript
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
python3 pillow生成简单验证码图片的示例
2017/09/19 Python
python中Apriori算法实现讲解
2017/12/10 Python
python递归全排列实现方法
2018/08/18 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
Python集合操作方法详解
2020/02/09 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
2021/02/26 Python
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
人事专员岗位职责
2013/11/20 职场文书
乡下人家教学反思
2014/02/01 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
学校纪律作风整改措施思想汇报
2014/10/11 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
大学生自荐书范文
2015/03/05 职场文书
电力工程合作意向书
2015/05/11 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
2022/04/04 Python