php使用socket post数据到其它web服务器的方法


Posted in PHP onJune 02, 2015

本文实例讲述了php使用socket post数据到其它web服务器的方法。分享给大家供大家参考。具体实现方法如下:

function post_request($url, $data, $referer='') {
  // Convert the data array into URL Parameters like a=b&foo=bar etc.
  $data = http_build_query($data);
  // parse the given URL
  $url = parse_url($url);
  if ($url['scheme'] != 'http') { 
    die('Error: Only HTTP request are supported !');
  }
  // extract host and path:
  $host = $url['host'];
  $path = $url['path'];
  // open a socket connection on port 80 - timeout: 30 sec
  $fp = fsockopen($host, 80, $errno, $errstr, 30);
  if ($fp){
    // send the request headers:
    fputs($fp, "POST $path HTTP/1.1\r\n");
    fputs($fp, "Host: $host\r\n");
    if ($referer != '')
      fputs($fp, "Referer: $referer\r\n");
    fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
    fputs($fp, "Content-length: ". strlen($data) ."\r\n");
    fputs($fp, "Connection: close\r\n\r\n");
    fputs($fp, $data);
    $result = ''; 
    while(!feof($fp)) {
      // receive the results of the request
      $result .= fgets($fp, 128);
    }
  }
  else { 
    return array(
      'status' => 'err', 
      'error' => "$errstr ($errno)"
    );
  }
  // close the socket connection:
  fclose($fp);
  // split the result header from the content
  $result = explode("\r\n\r\n", $result, 2);
  $header = isset($result[0]) ? $result[0] : '';
  $content = isset($result[1]) ? $result[1] : '';
  // return as structured array:
  return array(
    'status' => 'ok',
    'header' => $header,
    'content' => $content
  );
}
//使用方法
// Submit those variables to the server
$post_data = array(
  'test' => 'foobar',
  'okay' => 'yes',
  'number' => 2
);
// Send a request to example.com 
$result = post_request('http://www.example.com/', $post_data);
if ($result['status'] == 'ok'){
  // Print headers 
  echo $result['header']; 
  echo '<hr />';
  // print the result of the whole request:
  echo $result['content'];
}
else {
  echo 'A error occured: ' . $result['error']; 
}

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
php include和require的区别深入解析
Jun 17 PHP
php MessagePack介绍
Oct 06 PHP
php实现可以设置中奖概率的抽奖程序代码分享
Jan 19 PHP
php stripslashes和addslashes的区别
Feb 03 PHP
PHP函数http_build_query使用详解
Aug 20 PHP
微信支付的开发流程详解
Sep 13 PHP
PHP中仿制 ecshop验证码实例
Jan 06 PHP
PHP实现添加购物车功能
Mar 06 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
Laravel 错误提示本地化的实现
Oct 22 PHP
PHP手机号码及邮箱正则表达式实例解析
Jul 11 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
Dec 16 PHP
php自动给网址加上链接的方法
Jun 02 #PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 #PHP
php正则preg_replace_callback函数用法实例
Jun 01 #PHP
php实现读取和写入tab分割的文件
Jun 01 #PHP
php从文件夹随机读取文件的方法
Jun 01 #PHP
php计算整个目录大小的方法
Jun 01 #PHP
php获取系统变量方法小结
May 29 #PHP
You might like
PHP 获取文件路径(灵活应用__FILE__)
2013/02/15 PHP
ajax返回值中有回车换行、空格的解决方法分享
2013/10/24 PHP
php生成QRcode实例
2014/09/22 PHP
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
JavaScript获取并更改input标签name属性的方法
2015/07/02 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
vue 数组和对象不能直接赋值情况和解决方法(推荐)
2017/10/25 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
2017/11/09 Javascript
vue超时计算的组件实例代码
2018/07/09 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
vue实现滑动超出指定距离回顶部功能
2019/07/31 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
JavaScript 如何在浏览器中使用摄像头
2020/12/02 Javascript
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
Python多进程同步简单实现代码
2016/04/27 Python
一步步教你用python的scrapy编写一个爬虫
2019/04/17 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
Python实现仿射密码的思路详解
2020/04/23 Python
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
同步和异步有何异同,在什么情况下分别使用他们?举例说明
2014/02/27 面试题
新学期班主任寄语
2014/01/18 职场文书
趣味运动会广播稿
2014/09/13 职场文书
同学聚会邀请函
2015/01/30 职场文书
个人思想政治总结
2015/03/05 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
终止合同协议书范本
2016/03/22 职场文书
css背景和边框标签实例详解
2021/05/21 HTML / CSS