目次
Normal$ _GET、$_POST メソッド" >Normal$ _GET、$_POST メソッド
通常の $_REQUEST メソッド" >通常の $_REQUEST メソッド
register_globals の問題" >register_globals の問題
import_request_variables" >import_request_variables
extract" >extract
. およびパラメータ名のスペース" >. およびパラメータ名のスペース
パラメータ名の []" >パラメータ名の []
ハイエンド php://input" >ハイエンド php://input
まとめ" >まとめ
ホームページ バックエンド開発 PHPの問題 PHPで外部パラメータを受け取るにはどのような方法がありますか?

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

Jun 09, 2021 pm 05:17 PM
php

この記事では、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 サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles