php通过header发送自定义数据方法


Posted in PHP onJanuary 18, 2018

本文将介绍如何通过header发送自定义数据。发送请求时,除了可以使用$_GET/$_POST发送数据,也可以把数据放在header中传输过去。

发送header:

我们定义了三个参数,tokenlanguageregion,放入header发送过去

<?php
$url = 'http://www.example.com';
$header = array('token:JxRaZezavm3HXM3d9pWnYiqqQC1SJbsU','language:zh','region:GZ');
$content = array(
    'name' => 'fdipzone'
);
$response = tocurl($url, $header, $content);
$data = json_decode($response, true);
echo 'POST data:';
echo '<pre>';
print_r($data['post']);
echo '</pre>';
echo 'Header data:';
echo '<pre>';
print_r($data['header']);
echo '</pre>';
/**
 * 发送数据
 * @param String $url   请求的地址
 * @param Array $header 自定义的header数据
 * @param Array $content POST的数据
 * @return String
 */
function tocurl($url, $header, $content){
  $ch = curl_init();
  if(substr($url,0,5)=='https'){
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
  }
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($content));
  $response = curl_exec($ch);
  if($error=curl_error($ch)){
    die($error);
  }
  curl_close($ch);
  return $response;
}
?>

接收header

我们可以在$_SERVER中获取header数据,自定义的数据都是使用HTTP_作为前缀的,所以可以把HTTP_前缀的数据读出。

<?php
$post_data = $_POST;
$header = get_all_headers();
$ret = array();
$ret['post'] = $post_data;
$ret['header'] = $header;
header('content-type:application/json;charset=utf8');
echo json_encode($ret, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
/**
 * 获取自定义的header数据
 */
function get_all_headers(){
  // 忽略获取的header数据
  $ignore = array('host','accept','content-length','content-type');
  $headers = array();
  foreach($_SERVER as $key=>$value){
    if(substr($key, 0, 5)==='HTTP_'){
      $key = substr($key, 5);
      $key = str_replace('_', ' ', $key);
      $key = str_replace(' ', '-', $key);
      $key = strtolower($key);
      if(!in_array($key, $ignore)){
        $headers[$key] = $value;
      }
    }
  }
  return $headers;
}
?>

输出:

POST data:
Array
(
  [name] => fdipzone
)
Header data:
Array
(
  [token] => JxRaZezavm3HXM3d9pWnYiqqQC1SJbsU
  [language] => zh
  [region] => GZ
)

以上这篇php通过header发送自定义数据方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP中在数据库中保存Checkbox数据(1)
Oct 09 PHP
php 调用远程url的六种方法小结
Nov 02 PHP
php 文件上传代码(限制jpg文件)
Jan 05 PHP
PHP Zip压缩 在线对文件进行压缩的函数
May 26 PHP
PHP中英混合字符串截取函数代码
Jul 17 PHP
几个有用的php字符串过滤,转换函数代码
May 01 PHP
详解php的魔术方法__get()和__set()使用介绍
Sep 19 PHP
hadoop中一些常用的命令介绍
Jun 19 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
Sep 23 PHP
图文详解PHP环境搭建教程
Jul 16 PHP
php制作基于xml的RSS订阅源功能示例
Feb 08 PHP
laravel按天、按小时,查询数据的实例
Oct 09 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 #PHP
PHP获取链表中倒数第K个节点的方法
Jan 18 #PHP
PHP获取二叉树镜像的方法
Jan 17 #PHP
PHP实现按之字形顺序打印二叉树的方法
Jan 16 #PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 #PHP
PHP实现找出链表中环的入口节点
Jan 16 #PHP
详解thinkphp中的volist标签
Jan 15 #PHP
You might like
不要轻信 PHP_SELF的安全问题
2009/09/05 PHP
PHP 截取字符串专题集合
2010/08/19 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
php微信开发之自定义菜单实现
2016/11/18 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
js 操作css实现代码
2009/06/11 Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
2012/02/03 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
2012/10/12 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
Angularjs 事件指令详细整理
2017/07/27 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
详解JS浏览器事件循环机制
2019/03/27 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
Vue.js组件使用props传递数据的方法
2019/10/19 Javascript
微信小程序个人中心的列表控件实现代码
2020/04/26 Javascript
vue-cli 关闭热更新操作
2020/09/18 Javascript
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
Django 查询数据库并返回页面的例子
2019/08/12 Python
redis数据库及与python交互用法简单示例
2019/11/01 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
2020/05/26 Python
Html5页面上如何禁止手机虚拟键盘弹出
2020/03/19 HTML / CSS
日本钓鱼渔具和户外用品网上商店:naturum
2016/08/07 全球购物
微软台湾官方网站:Microsoft台湾
2018/08/15 全球购物
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
优秀党员转正的自我评价
2013/10/06 职场文书
英文自荐信常用句子
2014/03/26 职场文书
停水通知
2015/04/16 职场文书
一年级下册数学教学反思
2016/02/16 职场文书
Tomcat执行startup.bat出现闪退的原因及解决办法
2022/04/20 Servers