PHP はヘッダーを通じてカスタム データを送信します

WBOY
リリース: 2016-07-29 09:12:41
オリジナル
979 人が閲覧しました

この記事では、ヘッダーを介してカスタムデータを送信する方法を紹介します。リクエストを送る際は$_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 class="brush:php;toolbar:false">'</span>;
print_r(<span>$data</span>[<span>'post'</span>]);
<span>echo</span><span>'
'; echo'Header data:'; echo'
'</span>;
print_r(<span>$data</span>[<span>'header'</span>]);
<span>echo</span><span>'
'
; /** * 发送数据 * @param String $url 请求的地址 * @param Array $header 自定义的header数据 * @param Array $content POST的数据 * @return String */functiontocurl($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; } ?>
ログイン後にコピー

ヘッダーの受信

ヘッダーデータは$_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>
ログイン後にコピー
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

上記は、PHP がヘッダーを介してカスタム データを送信する方法を内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート