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 htmlspecialchars加强版
Feb 16 PHP
PHP版网站缓存加快打开速度的方法分享
Jun 03 PHP
php单例模式实现(对象只被创建一次)
Dec 05 PHP
php无序树实现方法
Jul 28 PHP
PHP实现长文章分页实例代码(附源码)
Feb 03 PHP
Smarty简单生成表单元素的方法示例
May 23 PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 PHP
PHP实现断点续传乱序合并文件的方法
Sep 06 PHP
PHP中创建和编辑Excel表格的方法
Sep 13 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
Feb 13 PHP
Yii框架应用组件用法实例分析
May 15 PHP
PHP加MySQL消息队列深入理解
Feb 27 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加密解密的代码
2006/10/09 PHP
用PHP和ACCESS写聊天室(一)
2006/10/09 PHP
PHP获取本周第一天和最后一天示例代码
2014/02/24 PHP
PHP中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
优化WordPress的Google字体以加速国内服务器上的运行
2015/11/24 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
Javascript变量函数浅析
2011/09/02 Javascript
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
Jquery选择子控件&quot;大于号&quot;和&quot; &quot;区别介绍及使用示例
2013/06/25 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
150行Node.js实现的dns代理工具
2019/08/02 Javascript
layui表格 列自动适应大小失效的解决方法
2019/09/06 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
Python处理XML格式数据的方法详解
2017/03/21 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
详解python 条件语句和while循环的实例代码
2020/12/28 Python
如何获取某个日期是当月的最后一天
2013/12/05 面试题
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
一些网络技术方面的面试题
2014/05/01 面试题
世界读书日的活动方案
2014/08/20 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
党员反邪教心得体会
2016/01/15 职场文书
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers