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 相关文章推荐
ftp类(myftp.php)
Oct 09 PHP
用Socket发送电子邮件(利用需要验证的SMTP服务器)
Oct 09 PHP
让PHP开发者事半功倍的十大技巧小结
Apr 20 PHP
PHP IF ELSE简化/三元一次式的使用
Aug 22 PHP
基于php split()函数的用法详解
Jun 05 PHP
php常用ODBC函数集(详细)
Jun 24 PHP
php读取大文件示例分享(文件操作类)
Apr 13 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
Sep 06 PHP
推荐一本PHP程序猿都应该拜读的书
Dec 31 PHP
php简单定时执行任务的实现方法
Feb 23 PHP
php pthreads多线程的安装与使用
Jan 19 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
Mar 25 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
一个odbc连mssql分页的类
2006/10/09 PHP
给多个地址发邮件的类
2006/10/09 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
2013/04/23 PHP
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
js脚本学习 比较实用的基础
2006/09/07 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
Bootstrap Table使用整理(一)
2017/06/09 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
Python实现的简单dns查询功能示例
2017/05/24 Python
python实现识别手写数字 python图像识别算法
2020/03/23 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
python2.7使用plotly绘制本地散点图和折线图
2019/04/02 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
2019/08/01 Python
python 实现方阵的对角线遍历示例
2019/11/29 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
10个python爬虫入门实例(小结)
2020/11/01 Python
.NET面试题:什么是反射
2016/09/30 面试题
班级寄语大全
2014/04/10 职场文书
个人欠款担保书
2014/05/20 职场文书
火灾现场处置方案
2014/05/28 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
任命书怎么写
2015/03/02 职场文书
劳动仲裁代理词范文
2015/05/25 职场文书
初中班干部工作总结
2015/08/10 职场文书
施工安全协议书
2016/03/22 职场文书
关于感恩的作文
2019/08/26 职场文书
LayUI+Shiro实现动态菜单并记住菜单收展的示例
2021/05/06 Javascript
Java后台生成图片的完整步骤
2021/08/04 Java/Android