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 正则表达式小结
Aug 31 PHP
深入PHP nl2br()格式化输出的详解
Jun 05 PHP
php防止sql注入代码实例
Dec 18 PHP
简单实用的网站PHP缓存类实例
Jul 18 PHP
PHP中执行cmd命令的方法
Oct 11 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
Feb 14 PHP
YII Framework框架教程之安全方案详解
Mar 14 PHP
浅谈php处理后端&amp;接口访问超时的解决方法
Oct 29 PHP
php 基础函数
Feb 10 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
Feb 17 PHP
PHP函数按引用传递参数及函数可选参数用法示例
Jun 04 PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 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中copy on write写时复制机制介绍
2014/05/13 PHP
PHP中的事务使用实例
2015/05/26 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
基于Jquery的回车成tab焦点切换效果代码(Enter To Tab )
2010/11/14 Javascript
js实现的map方法示例代码
2014/01/13 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
jquery replace方法去空格
2017/05/08 jQuery
浅谈AngularJS中$http服务的简单用法
2018/05/15 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
2018/08/25 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
8 个有用的JS技巧(推荐)
2019/07/03 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
javascript实现蒙版与禁止页面滚动
2020/01/11 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
javascript实现点击小图显示大图
2020/11/29 Javascript
python对json的相关操作实例详解
2017/01/04 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
python中itertools模块zip_longest函数详解
2018/06/12 Python
Virtualenv 搭建 Py项目运行环境的教程详解
2020/06/22 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
新西兰优惠网站:Treat Me
2019/07/04 全球购物
internal修饰符起什么作用
2013/12/16 面试题
实习自我鉴定范文
2013/10/30 职场文书
教师自我评价范文
2013/12/16 职场文书
餐饮营销方案
2014/02/23 职场文书
体育运动会广播稿
2014/10/05 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
公司年夜饭通知
2015/04/25 职场文书
盗窃案辩护词
2015/05/21 职场文书
Python机器学习之PCA降维算法详解
2021/05/19 Python