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 相关文章推荐
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
Jan 12 PHP
php curl的深入解析
Jun 02 PHP
php中的PHP_EOL换行符详细解析
Oct 26 PHP
php页面防重复提交方法总结
Nov 25 PHP
分享一段php获取linux服务器状态的代码
May 27 PHP
PHP常用编译参数中文说明
Sep 27 PHP
微信随机生成红包金额算法php版
Jul 21 PHP
php中final关键字用法分析
Dec 07 PHP
php简单生成一组与多组随机字符串的方法
May 09 PHP
PHP实现的数组和XML文件相互转换功能示例
Mar 15 PHP
PHP微信网页授权的配置文件操作分析
May 29 PHP
php判断/计算闰年的方法小结【三种方法】
Jul 06 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抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
Save a File Using a File Save Dialog Box
2007/06/18 Javascript
div层的移动及性能优化
2010/11/16 Javascript
js jquery获取随机生成id的服务器控件的三种方法
2013/07/11 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
jQuery实现下拉加载功能实例代码
2016/04/01 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
html判断当前页面是否在iframe中的实例
2016/11/30 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
原生javascript实现分页效果
2017/04/21 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
通过微信公众平台获取公众号文章的方法示例
2019/12/25 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
[07:08]2014DOTA2西雅图国际邀请赛 小组赛7月11日TOPPLAY
2014/07/11 DOTA
python使用socket远程连接错误处理方法
2015/04/29 Python
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
python3实现基于用户的协同过滤
2018/05/31 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
opencv python统计及绘制直方图的方法
2019/01/21 Python
python async with和async for的使用
2019/06/20 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
德国化妆品和天然化妆品网上商店:kosmetikfuchs.de
2017/06/09 全球购物
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
浪漫的婚礼主持词
2015/06/30 职场文书
入党后的感想
2015/08/10 职场文书