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 相关文章推荐
构建简单的Webmail系统
Oct 09 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
Jul 01 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
Jan 15 PHP
php使用curl出现Expect:100-continue解决方法
Mar 03 PHP
php实现用已经过去多长时间的方式显示时间
Jun 05 PHP
PHP图形操作之Jpgraph学习笔记
Dec 25 PHP
PHP截取IE浏览器并缩小原图的方法
Mar 04 PHP
zend framework重定向方法小结
May 28 PHP
php简单实现多维数组排序的方法
Sep 30 PHP
Laravel 集成 Geetest验证码的方法
May 14 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
Aug 15 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
Feb 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
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
2007/03/15 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
Javascript &amp; DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
2016/05/16 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
2016/09/21 Javascript
Javascrip实现文字跳动特效
2016/11/27 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
2018/05/30 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
Python抓取京东图书评论数据
2014/08/31 Python
浅析Python中的join()方法的使用
2015/05/19 Python
django初始化数据库的实例
2018/05/27 Python
python使用epoll实现服务端的方法
2018/10/16 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
2019/07/07 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
PyTorch实现AlexNet示例
2020/01/14 Python
python Shapely使用指南详解
2020/02/18 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
为智能设备设计个性化保护套网站:caseable
2017/01/05 全球购物
2014年社区植树节活动方案
2014/02/28 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
党的群众路线教育实践活动查摆剖析材料
2014/10/10 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
2014小学数学教研组工作总结
2014/12/06 职场文书
导游词之吉林花园山
2019/10/17 职场文书
python基础入门之字典和集合
2021/06/13 Python
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL