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 相关文章推荐
搜索和替换文件或目录的一个好类--很实用
Oct 09 PHP
eWebEditor v3.8 商业完整版 (PHP)
Dec 06 PHP
php创建多级目录代码
Jun 05 PHP
php对大文件进行读取操作的实现代码
Jan 23 PHP
php中session过期时间设置及session回收机制介绍
May 05 PHP
Drupal简体中文语言包安装教程
Sep 27 PHP
php实现的一个简单json rpc框架实例
Mar 30 PHP
php+ajax无刷新上传图片实例代码
Nov 17 PHP
PHP会员找回密码功能的简单实现
Sep 05 PHP
Yii框架组件的事件机制原理与用法分析
Apr 07 PHP
Yii框架安装简明教程
May 15 PHP
ThinkPHP5分页paginate代码实例解析
Nov 10 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获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
JavaScript中的Document文档对象
2008/01/16 Javascript
一个页面元素appendchild追加到另一个页面元素的问题
2013/01/27 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
Node.js事件驱动
2015/06/18 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
2016/09/26 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
Vue.js实战之利用vue-router实现跳转页面
2017/04/01 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
vue仿淘宝订单状态的tab切换效果
2020/06/23 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
[01:20]DOTA2 2017国际邀请赛冠军之路无止竞
2017/06/19 DOTA
Python实现动态加载模块、类、函数的方法分析
2017/07/18 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
2020/04/13 Python
Python eval函数原理及用法解析
2020/11/14 Python
python-jwt用户认证食用教学的实现方法
2021/01/19 Python
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
实习生个人的自我评价
2013/12/08 职场文书
农民工创业典型事迹
2014/01/25 职场文书
2014年保管员工作总结
2014/11/18 职场文书
写给孩子的新学期寄语
2015/02/27 职场文书
民事起诉状范文
2015/05/19 职场文书
新教师教学工作总结
2015/08/12 职场文书
教师反邪教心得体会
2016/01/15 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
MySQL中连接查询和子查询的问题
2021/09/04 MySQL
微信小程序 根据不同用户切换不同TabBar
2022/04/21 Javascript
使用CSS实现黑白格背景效果
2022/06/01 HTML / CSS
向Spring IOC 容器动态注册bean实现方式
2022/07/15 Java/Android