PHP はヘッダーを通じてカスタム データを送信します
Jul 29, 2016 am 09:12 AM
array
content
curl
header
この記事では、ヘッダーを介してカスタムデータを送信する方法を紹介します。リクエストを送る際は$_GET/$_POSTを使ってデータを送信するほか、ヘッダーにデータを入れて送信することもできます。
ヘッダーの送信:
3つのパラメータ、トークン、言語、地域を定義し、ヘッダーを付けて送信します
<code><span><span><?php</span><span>$url</span> = <span>'http://www.example.com'</span>; <span>$header</span> = <span>array</span>(<span>'token:JxRaZezavm3HXM3d9pWnYiqqQC1SJbsU'</span>,<span>'language:zh'</span>,<span>'region:GZ'</span>); <span>$content</span> = <span>array</span>( <span>'name'</span> => <span>'fdipzone'</span> ); <span>$response</span> = tocurl(<span>$url</span>, <span>$header</span>, <span>$content</span>); <span>$data</span> = json_decode(<span>$response</span>, <span>true</span>); <span>echo</span><span>'POST data:'</span>; <span>echo</span><span>'<pre>'</span>; print_r(<span>$data</span>[<span>'post'</span>]); <span>echo</span><span>'</pre>'</span>; <span>echo</span><span>'Header data:'</span>; <span>echo</span><span>'<pre>'</span>; print_r(<span>$data</span>[<span>'header'</span>]); <span>echo</span><span>'</pre>'</span>; <span>/** * 发送数据 *<span> @param</span> String $url 请求的地址 *<span> @param</span> Array $header 自定义的header数据 *<span> @param</span> Array $content POST的数据 *<span> @return</span> String */</span><span><span>function</span><span>tocurl</span><span>(<span>$url</span>, <span>$header</span>, <span>$content</span>)</span>{</span><span>$ch</span> = curl_init(); <span>if</span>(substr(<span>$url</span>,<span>0</span>,<span>5</span>)==<span>'https'</span>){ curl_setopt(<span>$ch</span>, CURLOPT_SSL_VERIFYPEER, <span>false</span>); <span>// 跳过证书检查</span> curl_setopt(<span>$ch</span>, CURLOPT_SSL_VERIFYHOST, <span>true</span>); <span>// 从证书中检查SSL加密算法是否存在</span> } curl_setopt(<span>$ch</span>, CURLOPT_RETURNTRANSFER, <span>true</span>); curl_setopt(<span>$ch</span>, CURLOPT_URL, <span>$url</span>); curl_setopt(<span>$ch</span>, CURLOPT_HTTPHEADER, <span>$header</span>); curl_setopt(<span>$ch</span>, CURLOPT_POST, <span>true</span>); curl_setopt(<span>$ch</span>, CURLOPT_POSTFIELDS, http_build_query(<span>$content</span>)); <span>$response</span> = curl_exec(<span>$ch</span>); <span>if</span>(<span>$error</span>=curl_error(<span>$ch</span>)){ <span>die</span>(<span>$error</span>); } curl_close(<span>$ch</span>); <span>return</span><span>$response</span>; } <span>?></span></span></span></code>
ログイン後にコピー
ヘッダーの受信
ヘッダーデータは$_SERVERで取得できます, カスタムデータにはHTTP_というプレフィックスが付いているので、HTTP_プレフィックスが付いたデータを読み出すことができます。
<code><span><span><?php</span><span>$post_data</span> = <span>$_POST</span>; <span>$header</span> = get_all_headers(); <span>$ret</span> = <span>array</span>(); <span>$ret</span>[<span>'post'</span>] = <span>$post_data</span>; <span>$ret</span>[<span>'header'</span>] = <span>$header</span>; header(<span>'content-type:application/json;charset=utf8'</span>); <span>echo</span> json_encode(<span>$ret</span>, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT); <span>/** * 获取自定义的header数据 */</span><span><span>function</span><span>get_all_headers</span><span>()</span>{</span><span>// 忽略获取的header数据</span><span>$ignore</span> = <span>array</span>(<span>'host'</span>,<span>'accept'</span>,<span>'content-length'</span>,<span>'content-type'</span>); <span>$headers</span> = <span>array</span>(); <span>foreach</span>(<span>$_SERVER</span><span>as</span><span>$key</span>=><span>$value</span>){ <span>if</span>(substr(<span>$key</span>, <span>0</span>, <span>5</span>)===<span>'HTTP_'</span>){ <span>$key</span> = substr(<span>$key</span>, <span>5</span>); <span>$key</span> = str_replace(<span>'_'</span>, <span>' '</span>, <span>$key</span>); <span>$key</span> = str_replace(<span>' '</span>, <span>'-'</span>, <span>$key</span>); <span>$key</span> = strtolower(<span>$key</span>); <span>if</span>(!in_array(<span>$key</span>, <span>$ignore</span>)){ <span>$headers</span>[<span>$key</span>] = <span>$value</span>; } } } <span>return</span><span>$headers</span>; } <span>?></span></span></span></code>
ログイン後にコピー
出力:
<code>POST data: <span>Array</span> ( [name] => fdipzone ) Header data: <span>Array</span> ( [token] => JxRaZezavm3HXM3d9pWnYiqqQC1SJbsU [language] => zh [region] => GZ )</code>
ログイン後にコピー
上記は、PHP がヘッダーを介してカスタム データを送信する方法を内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7285
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1342
46


Laravel チュートリアル
1259
25


PHP チュートリアル
1206
29



PythonでCURLリクエストとPythonリクエストの相互変換を実現する方法

SpringBoot はどのように Feign 呼び出しを通じてヘッダー内のパラメーターを渡しますか?

最初から最後まで: PHP 拡張機能 cURL を使用して HTTP リクエストを行う方法

PHP Curl で Web ページの 301 リダイレクトを処理するにはどうすればよいですか?
