php通過header發(fā)送自定義數(shù)據(jù)方法
本文將介紹如何通過header發(fā)送自定義數(shù)據(jù)。發(fā)送請(qǐng)求時(shí),除了可以使用$_GET/$_POST發(fā)送數(shù)據(jù),也可以把數(shù)據(jù)放在header中傳輸過去。
發(fā)送header:
我們定義了三個(gè)參數(shù),token、language、region,放入header發(fā)送過去
<?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>'; /** * 發(fā)送數(shù)據(jù) * @param String $url 請(qǐng)求的地址 * @param Array $header 自定義的header數(shù)據(jù) * @param Array $content POST的數(shù)據(jù) * @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數(shù)據(jù),自定義的數(shù)據(jù)都是使用HTTP_作為前綴的,所以可以把HTTP_前綴的數(shù)據(jù)讀出。
<?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數(shù)據(jù) */ function get_all_headers(){ // 忽略獲取的header數(shù)據(jù) $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發(fā)送自定義數(shù)據(jù)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于wordpress主題制作的具體實(shí)現(xiàn)步驟
本篇文章是對(duì)wordpress主題制作的具體實(shí)現(xiàn)步驟進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下2013-05-05CodeIgniter php mvc框架 中國(guó)網(wǎng)站
CodeIgniter 是一個(gè)小巧但功能強(qiáng)大的 PHP 框架,作為一個(gè)簡(jiǎn)單而“優(yōu)雅”的工具包,它可以為 PHP 程序員建立功能完善的 Web 應(yīng)用程序。如果你是一個(gè)使用共享主機(jī),并且為客戶所要求的期限而煩惱的開發(fā)人員,如果你已經(jīng)厭倦了那些傻大笨粗的框架2008-05-05php array_map()函數(shù)實(shí)例用法
在本篇文章里小編給大家分享了一篇關(guān)于php array_map()函數(shù)實(shí)例用法,有興趣的朋友們可以學(xué)習(xí)下。2021-03-03PHP入門教程之?dāng)?shù)學(xué)運(yùn)算技巧總結(jié)
這篇文章主要介紹了PHP入門教程之?dāng)?shù)學(xué)運(yùn)算技巧,結(jié)合實(shí)例形式總結(jié)分析了php數(shù)值運(yùn)算、變量檢測(cè)、隨機(jī)數(shù)、絕對(duì)值、取整、最大值、最小值、四舍五入等操作技巧,需要的朋友可以參考下2016-09-09