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 相关文章推荐
通过ICQ网关发送手机短信的PHP源程序
Oct 09 PHP
Dedecms V3.1 生成HTML速度的优化办法
Mar 18 PHP
php Ajax乱码
Apr 09 PHP
Excel数据导入Mysql数据库的实现代码
Jun 05 PHP
PHP判断远程url是否有效的几种方法小结
Oct 08 PHP
PHP四舍五入、取整、round函数使用示例
Feb 06 PHP
php实现编辑和保存文件的方法
Jul 20 PHP
php实现简易聊天室应用代码
Sep 23 PHP
php的socket编程详解
Nov 20 PHP
Zend Framework校验器Zend_Validate用法详解
Dec 09 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
Apr 08 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
May 09 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循环结构实例讲解
2014/02/10 PHP
将php数组输出html表格的方法
2014/02/24 PHP
php CI框架插入一条或多条sql记录示例
2014/07/29 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
Javascript 模式实例 观察者模式
2009/10/24 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
js中哈希表的几种用法总结
2014/01/28 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
Bootstrap3 图片(响应式图片&amp;图片形状)
2017/01/04 Javascript
javascript+css3开发打气球小游戏完整代码
2017/11/28 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
2018/03/02 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
2019/04/30 Javascript
vue-video-player 断点续播的实现
2021/02/01 Vue.js
[06:36]吞吞映像top1
2014/06/20 DOTA
python多线程用法实例详解
2015/01/15 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
python3中eval函数用法使用简介
2019/08/02 Python
简单了解python中的f.b.u.r函数
2019/11/02 Python
python读取与处理netcdf数据方式
2020/02/14 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
2020/06/04 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
俄罗斯园林植物网上商店:Garshinka
2020/07/16 全球购物
暑期实习鉴定
2013/12/16 职场文书
大学自我鉴定
2013/12/20 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
2015年高中语文教学总结
2015/08/18 职场文书
高考百日冲刺决心书
2015/09/23 职场文书
MySQL 常见存储引擎的优劣
2021/06/02 MySQL
Spring 使用注解开发
2022/05/20 Java/Android