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语法(2)
Oct 09 PHP
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
May 18 PHP
请离开include_once和require_once
Jul 18 PHP
php发送get、post请求的6种方法简明总结
Jul 08 PHP
浅谈php命令行用法
Feb 04 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
Apr 08 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
Nov 19 PHP
Joomla框架实现字符串截取的方法示例
Jul 18 PHP
Yii2结合Workerman的websocket示例详解
Sep 10 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
Apr 09 PHP
Yii2.0框架behaviors方法使用实例分析
Sep 30 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 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中的三元运算符使用说明
2011/07/03 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
2011/10/23 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
javascript打开word文档的方法
2014/04/16 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
javascript实现简单的贪吃蛇游戏
2015/03/31 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
值得分享的Bootstrap Table使用教程
2016/11/23 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
2018/08/09 Javascript
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
TypeScript类型声明书写详解
2019/08/28 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
使用Python的Twisted框架实现一个简单的服务器
2015/04/16 Python
详解使用 pyenv 管理多个版本 python 环境
2017/10/19 Python
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
python爬虫之遍历单个域名
2019/11/20 Python
python实现批量处理将图片粘贴到另一张图片上并保存
2019/12/12 Python
Pycharm最常用的快捷键及使用技巧
2020/03/05 Python
OpenCV Python实现拼图小游戏
2020/03/23 Python
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
门卫岗位安全职责
2013/12/13 职场文书
记者岗位职责
2014/01/06 职场文书
cf收人广告词大全
2014/03/14 职场文书
2014年大学生四年规划书范文
2014/04/03 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
Python调用腾讯API实现人脸身份证比对功能
2022/04/04 Python