ホームページ >バックエンド開発 >PHPの問題 >PHPで外部パラメータを受け取るにはどのような方法がありますか?

PHPで外部パラメータを受け取るにはどのような方法がありますか?

醉折花枝作酒筹
醉折花枝作酒筹転載
2021-06-09 17:17:212195ブラウズ

この記事では、PHP で外部パラメータを受け取る方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

PHPで外部パラメータを受け取るにはどのような方法がありますか?

PHP のような Web 言語の場合、パラメーターを受け取ることは非常に重要な機能です。結局のところ、通常の対話型表示のためには、フロントエンド フォームまたは非同期リクエストから渡されたデータを取得する必要があります。もちろん、これは Web 開発が可能なすべての言語にとって不可欠な機能でもあります。今日は、PHP のさまざまなパラメーター アクセス フォームを見ていきます。

まず、次のような静的ページを準備する必要があります。このページでは、URL にフォームと GET パラメーターを提供します:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <form action="?show=1" method="post">
        姓名:<input type="text" name="name"/><br />
        电话:<input type="text" name="tel"/><br/>

        地址(省):<input type="text" name="address.prov"/><br/>
        地址(市):<input type="text" name="address city"/><br/>

        兴趣1:<input type="text" name="interest[]"/><br/>
        兴趣2:<input type="text" name="interest[]"/><br/>
        兴趣3:<input type="text" name="interest[]"/><br/>

        学历1:<input type="text" name="edu[one]"/><br/>
        学历2:<input type="text" name="edu[two]"/><br/>

        <input type="submit" value="提交" >
    </form>
</body>
</html>

Normal$ _GET、$_POST メソッド

// 正常的GET、POST
    echo $_GET[&#39;show&#39;], &#39;<br/>&#39;; // 1
    echo $_POST[&#39;name&#39;], &#39;<br/>&#39;; // 提交的内容

これは、パラメータを受け取る最も基本的で直接的な方法です。GET パラメータは $_GET を通じて取得され、POST パラメータは $_POST を通じて取得されます。相互に干渉しません。

通常の $_REQUEST メソッド

    // 使用REQUEST
    echo $_REQUEST[&#39;show&#39;], &#39;<br/>&#39;; // 1
    echo $_REQUEST[&#39;tel&#39;], &#39;<br/>&#39;; // 提交的内容

$_REQUEST は、アップロードされたファイルを除く、リクエスト内のすべてのパラメーターを取得します。つまり、3 つのアクセス パラメーター変数 $_GET、$_POST、$_COOKIE のすべての内容が含まれます (構成が必要で、デフォルトでは含まれていません)。ここで注意すべき点の 1 つは、PHP5.3 以降、$_REQUEST で受け入れられるパラメーター変数の内容は、php.ini ファイルの request_order で指定されることです。デフォルトでは、この構成パラメーターの値は GP (つまり、GET および POST) です。 COOKIEが必要な場合は、それを修正してCを追加する必要があると思います。

$_GET と $_POST に同じ名前のコンテンツがある場合はどうなりますか? $_REQUEST が表示される順序も、左から右への構成パラメータの順序に基づいており、後者が前のパラメータをカバーします。たとえば、GP を構成する場合、パラメータの適用順序は次のようになります。 GET で、最終的な表示は POST で行われます。

register_globals の問題

    // register_globals 如果打开
    echo $name, &#39;<br/>&#39;; // 提交的内容
    echo $tel, &#39;<br/>&#39;; // 提交的内容

これは安全でない構成であり、php.ini ファイルでも構成されています。その機能は、要求されたパラメータを変数に直接変換することですが、グローバル変数汚染の問題があるため、開かないでください。 ! !現在の php.ini ファイルは基本的にデフォルトではオフになっています。

import_request_variables

    // import_request_variables 抱歉,5.4之后已经取消了
    import_request_variables(&#39;pg&#39;, &#39;pg_&#39;);
    echo $pg_show, &#39;<br/>&#39;;
    echo $pg_name, &#39;<br/>&#39;;

この関数は、指定されたパラメータ変数の内容をグローバル変数として手動で登録します。同様に、5.4 以降はキャンセルされました。すべての関数 このような関数がかつてあったかどうか調べてみましょう。

extract

    extract($_POST, EXTR_PREFIX_ALL, &#39;ex&#39;);
    echo $ex_name, &#39;<br/>&#39;; // 提交的内容
    echo $ex_tel, &#39;<br/>&#39;; // 提交的内容

extract は、上記の 2 つのパラメーター変換を置き換えることができるメソッドとして現在サポートされています。既存の変数の上書きを制御するかどうかは、2 番目のパラメーターです。これにより、制御可能な環境でグローバル変数が汚染される問題を大幅に回避できます。もちろん、それを自分で使用することが前提です。具体的には、ドキュメントのリファレンスを自分で見つけることができます。

. およびパラメータ名のスペース

    // 参数名中的.和空格
    echo $_REQUEST[&#39;address_prov&#39;], &#39;<br/>&#39;; // 提交的内容
    echo $_REQUEST[&#39;address_city&#39;], &#39;<br/>&#39;; // 提交的内容

フォームによって送信された入力の名前に . またはスペースが含まれている場合、アンダースコアに直接変換されます。ただし、フロントエンドの名前付けに . やスペースを使用することはお勧めしません。必要に応じてアンダースコアを使用してください。フロントエンドとフロントエンドの間にあいまいさを生じさせないでください。

パラメータ名の []

    // 参数名中的[]
    print_r($_REQUEST[&#39;interest&#39;]); // Array (v,....) 
    echo &#39;<br />&#39;;
    print_r($_REQUEST[&#39;edu&#39;]); // Array (k/v,....)

フォームによって送信された入力の名前が配列の形式である場合、つまり「interest[ ]" または "edu[one] " この形式では、受け取るパラメータはデフォルトで配列の内容になります。

ハイエンド php://input

    // php://input
    $content = file_get_contents(&#39;php://input&#39;);   
    print_r($content); //name=xxx&.....

最後に、パラメータの php://input 形式は、インターフェイス開発でよく使用されます。一般に、多くのセキュリティ フィールドまたはパラメータ フィールドがある場合、フロント エンドは Body Raw の形式で Body コンテンツのセクション全体を直接転送します。現時点では、この形式でのみ取得できます。この Body Raw の元のコンテンツは通常、テキストの段落全体であるか、暗号化されたコンテンツである可能性があります。形式は自分で定義できます。通常のフォームに直面した場合、受け取るのは上記の name=xxx&tel=xxx&.... と同様に、元のフォームの内容です。

enctype="multipart/form-data"を使用した場合、コンテンツは取得できませんので注意してください。同時に、このメソッドは $HTTP_RAW_POST_DATA グローバル変数も置き換えます。削除された機能はもう使用しないでください。新しい構文機能を使用するには、できるだけ早く PHP の新しいバージョンを更新してください。

まとめ

整理してみると、単純なパラメータの接続には非常に多くの形式や注意が必要な点があることがわかり、本当に目を見張るものがありました。今でも同じことですが、学びに終わりはなく、深く学び続ければ、遅かれ早かれ達人になれるのです!

テスト コード:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202002/source/%E5%8F%98%E7%9D%80%E8%8A%B1%E6%A0%B7%E6%9D%A5%E6%8E%A5%E5%8F%82%EF%BC%8CPHP%E4%B8%AD%E6%8E%A5%E6%94%B6%E5%A4%96%E9%83%A8%E5%8F%82%E6%95%B0%E7%9A%84%E6%96%B9%E5%BC%8F.php

推奨学習: php ビデオ チュートリアル

以上がPHPで外部パラメータを受け取るにはどのような方法がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。