ホームページ バックエンド開発 PHPチュートリアル PHP はヘッダーを通じてカスタム データを送信します

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

Jul 29, 2016 am 09:12 AM
array content curl header

この記事では、ヘッダーを介してカスタムデータを送信する方法を紹介します。リクエストを送る際は$_GET/$_POSTを使ってデータを送信するほか、ヘッダーにデータを入れて送信することもできます。

ヘッダーの送信:

3つのパラメータ、トークン、言語、地域を定義し、ヘッダーを付けて送信します

<code><span><span>&lt;?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> =&gt; <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>'&lt;pre&gt;'</span>;
print_r(<span>$data</span>[<span>'post'</span>]);
<span>echo</span><span>'&lt;/pre&gt;'</span>;
<span>echo</span><span>'Header data:'</span>;
<span>echo</span><span>'&lt;pre&gt;'</span>;
print_r(<span>$data</span>[<span>'header'</span>]);
<span>echo</span><span>'&lt;/pre&gt;'</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>?&gt;</span></span></span></code>
ログイン後にコピー

ヘッダーの受信

ヘッダーデータは$_SERVERで取得できます, カスタムデータにはHTTP_というプレフィックスが付いているので、HTTP_プレフィックスが付いたデータを読み出すことができます。

<code><span><span>&lt;?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>=&gt;<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>?&gt;</span></span></span></code>
ログイン後にコピー

出力:

<code>POST data:
<span>Array</span>
(
    [name] =&gt; fdipzone
)
Header data:
<span>Array</span>
(
    [token] =&gt; JxRaZezavm3HXM3d9pWnYiqqQC1SJbsU
    [language] =&gt; zh
    [region] =&gt; GZ
)</code>
ログイン後にコピー
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PythonでCURLリクエストとPythonリクエストの相互変換を実現する方法 PythonでCURLリクエストとPythonリクエストの相互変換を実現する方法 May 03, 2023 pm 12:49 PM

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

Linux での CURL バージョンの更新に関するチュートリアル! Linux での CURL バージョンの更新に関するチュートリアル! Mar 07, 2024 am 08:30 AM

Linux での CURL バージョンの更新に関するチュートリアル!

PHP8.1 リリース: 複数リクエストの同時処理のためのcurlの導入 PHP8.1 リリース: 複数リクエストの同時処理のためのcurlの導入 Jul 08, 2023 pm 09:13 PM

PHP8.1 リリース: 複数リクエストの同時処理のためのcurlの導入

Linuxヘッダーとはどういう意味ですか? Linuxヘッダーとはどういう意味ですか? Jul 18, 2023 pm 03:34 PM

Linuxヘッダーとはどういう意味ですか?

SpringBoot はどのように Feign 呼び出しを通じてヘッダー内のパラメーターを渡しますか? SpringBoot はどのように Feign 呼び出しを通じてヘッダー内のパラメーターを渡しますか? May 16, 2023 pm 08:38 PM

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

最初から最後まで: PHP 拡張機能 cURL を使用して HTTP リクエストを行う方法 最初から最後まで: PHP 拡張機能 cURL を使用して HTTP リクエストを行う方法 Jul 29, 2023 pm 05:07 PM

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

Linuxカールとは何ですか Linuxカールとは何ですか Apr 20, 2023 pm 05:05 PM

Linuxカールとは何ですか

PHP Curl で Web ページの 301 リダイレクトを処理するにはどうすればよいですか? PHP Curl で Web ページの 301 リダイレクトを処理するにはどうすればよいですか? Mar 08, 2024 am 11:36 AM

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

See all articles