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&amp;mysql(五)
Oct 09 PHP
php网站来路获取代码(针对搜索引擎)
Jun 08 PHP
PHP抓屏函数实现屏幕快照代码分享
Jan 02 PHP
Yii查询生成器(Query Builder)用法实例教程
Sep 04 PHP
php注册登录系统简化版
Dec 28 PHP
php支持断点续传、分块下载的类
May 02 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
Aug 17 PHP
php 修改上传文件大小限制实例详解
Oct 23 PHP
PHP简单获取随机数的常用方法小结
Jun 07 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
PHP生成图表pChart的示例解析
Jul 31 PHP
Laravel中获取IP的真实地理位置
Apr 01 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下检测字符串是否是utf8编码的代码
2008/06/28 PHP
php实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
WordPress中用于检索模版的相关PHP函数使用解析
2015/12/15 PHP
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
利用jQuery接受和处理xml数据的代码(.net)
2011/03/28 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
ES6的新特性概览
2016/03/10 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
2016/05/05 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
2017/04/21 jQuery
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
vue-cli 3.x 修改dist路径的方法
2018/09/19 Javascript
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
Python多继承顺序实例分析
2018/05/26 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
在python3中实现查找数组中最接近与某值的元素操作
2020/02/29 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
描述RIP和OSPF区别以及特点
2015/01/17 面试题
咖啡馆创业计划书
2014/01/26 职场文书
年终总结会议主持词
2014/03/17 职场文书
欢迎标语大全
2014/06/21 职场文书
大学社团招新的通讯稿
2014/09/10 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript
SpringBoot详解整合Redis缓存方法
2022/07/15 Java/Android