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中转义mysql语句的实现代码
Jun 24 PHP
php中禁止单个IP与ip段访问的代码小结
Jul 04 PHP
使用php实现截取指定长度
Aug 06 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
Feb 03 PHP
深入解析PHP的Yii框架中的event事件机制
Mar 17 PHP
Yii实现显示静态页的方法
Apr 25 PHP
PHP 极验验证码实例讲解
Sep 29 PHP
php微信开发之百度天气预报
Nov 18 PHP
PHP实现的文件操作类及文件下载功能示例
Dec 24 PHP
Yii2框架数据验证操作实例详解
May 02 PHP
Laravel多域名下字段验证的方法
Apr 04 PHP
PHP远程连接oracle数据库操作实现方法图文详解
Apr 11 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不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
php microtime获取浮点的时间戳
2010/02/21 PHP
深入PHP empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
2019/10/30 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
非常好的js代码
2006/06/27 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
Function.prototype.apply()与Function.prototype.call()小结
2016/04/27 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
深入理解Promise.all
2018/08/08 Javascript
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
PyMongo安装使用笔记
2015/04/27 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
2015/07/15 Python
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
浅析Python中return和finally共同挖的坑
2017/08/18 Python
python opencv读mp4视频的实例
2018/12/07 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
python实现密码验证合格程序的思路详解
2020/06/01 Python
python字符串的index和find的区别详解
2020/06/20 Python
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
家长给孩子的评语
2014/01/30 职场文书
财务支持类个人的自我评价
2014/02/14 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
导游词之安徽九华山
2019/09/18 职场文书
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle