PHP でスーパーグローバル変数を使用する方法

PHPz
リリース: 2023-05-20 19:02:02
オリジナル
1250 人が閲覧しました

PHP のスーパー グローバル変数は、グローバル スコープでアクセスできる変数を指します。各スーパー グローバル変数は連想配列であり、$_GET、$_POST、$_COOKIE など、PHP で事前定義された多くの変数が含まれています。 。これらのスーパーグローバル変数は、フォーム データの取得、URL パラメータの取得など、ユーザーのリクエストから情報を取得する重要な方法を提供するため、Web 開発において非常に重要です。

この記事では、PHP でよく使用されるスーパーグローバル変数について、その機能、使用方法、セキュリティ問題の回避方法などを詳しく紹介します。

1. $_GET

$_GET は、URL を通じて渡されるすべてのパラメーターを含む連想配列です。たとえば、リクエストされた URL が http://example.com/index.php?name=John&age=25 の場合、$_GET 配列には次の要素が含まれます。

array(
    'name' => 'John',
    'age' => '25'
);
ログイン後にコピー

以下の方法 これらの値:

echo $_GET['name']; // 输出 'John'
echo $_GET['age']; // 输出 '25'
ログイン後にコピー

2. $_POST

$_POST は、POST メソッドを通じて送信されたすべてのフォーム データを含む連想配列でもあります。以下に示すように、これを使用してフォームからデータを取得できます:

<form action="process.php" method="post">
    <input type="text" name="name" />
    <input type="submit" value="Submit">
</form>
ログイン後にコピー

フォームを送信するとき、$_POST スーパー グローバル変数を使用して送信されたデータを取得できます:

echo $_POST['name'];
ログイン後にコピー

3. $_COOKIE

$_COOKIE は、現在のリクエストで送信されたすべての Cookie を含む連想配列です。ほとんどの場合、$_COOKIE 変数を使用して、以前に設定された Cookie を読み取ることができます。

setcookie('name', 'John', time() + (86400 * 30), '/');
ログイン後にコピー

これにより、ユーザーのブラウザに「name」という名前の値「John」を持つ Cookie が設定され、30 日後に期限切れになります。次のコードを使用して、Cookie の値を読み取ることができます。

echo $_COOKIE['name'];
ログイン後にコピー

4. $_SESSION

$_SESSION は、ユーザー セッション中に保存されたすべての変数を含む連想配列です。ユーザーが Web サイトにアクセスしたとき、$_SESSION だけがユーザーを区別します。

セッションにデータを保存するには、次のコードを使用できます:

session_start();
$_SESSION['name'] = 'John';
ログイン後にコピー

この方法で、セッション全体を通じて特定の値の状態を維持できます:

session_start();
echo $_SESSION['name']; // 输出 'John'
ログイン後にコピー

5. $_SERVER

$_SERVER は、現在のスクリプトの実行時のサーバーおよびクライアント関連の情報を含む配列です。 $_SERVER を使用すると、クライアントから要求されたいくつかの情報を知ることができます。例:

  • リモート アクセス ユーザーの IP アドレス: $_SERVER['REMOTE_ADDR']
  • ユーザー エージェント: $ _SERVER['HTTP_USER_AGENT']
  • 現在のスクリプトのファイル パス: $_SERVER['SCRIPT_FILENAME']
  • 現在のリクエスト メソッド (GET/POST): $_SERVER['REQUEST_METHOD']
  • 現在のスクリプトが配置されているルート ディレクトリ: $_SERVER['DOCUMENT_ROOT']

この情報は開発者にとって非常に役立ちます。

6. $_FILES

$_FILES は、ファイル アップロード内のファイルに関する情報を含む配列です。ファイルをアップロードする場合、$_FILES を使用してアップロードされたファイルを操作できます。

次のコードを使用して、$_FILES の値を出力できます:

print_r($_FILES);
ログイン後にコピー

これにより、ファイル情報を含む配列が出力されます (例:

Array
(
    [file] => Array
        (
            [name] => file.txt
            [type] => text/plain
            [tmp_name] => /tmp/phpzAduR5
            [error] => 0
            [size] => 123
        )

)
ログイン後にコピー

7)。セキュリティの問題

PHP ではスーパーグローバル変数がデフォルトで有効になっており、開発者はそれらを使用して Web リクエストのデータを簡単に取得できます。ただし、これらはセキュリティ上の脆弱性の原因でもあります。

攻撃者は、Web リクエストでスーパーグローバル変数を使用して、悪意のあるコードを挿入したり、Web アプリケーションに脆弱性を作成したりする可能性があります。したがって、開発者は Web サイトを保護するために次の手順を実行する必要があります:

  1. 入力データをフィルターします。 PHP の filter_var() 関数または正規表現を使用して入力データをフィルタリングし、ユーザーが悪意のあるコードを挿入しないようにできます。
  2. 入力データを検証します。開発者は、すべての入力データを検証して、予想される形式と長さに準拠していることを確認する必要があります。たとえば、電子メール アドレスを処理する場合、filter_var() 関数を使用して、電子メール アドレスが正しい形式であることを確認できます。
  3. スーパーグローバル変数を SQL クエリまたはコマンドに直接渡さないでください。これは、SQL インジェクションやその他のセキュリティ問題を回避するための適切なプログラミング方法です。
  4. エラー報告を閉じます。運用サーバーでは、攻撃者がアプリケーション アーキテクチャに関する情報やその他の機密情報を入手できないようにするために、PHP のエラー報告機能をオフにする必要があります。

概要

PHP でスーパー グローバル変数を使用すると、Web リクエストのデータを簡単に取得できます。開発者はこれらの変数を注意深く理解し、Web アプリケーションの作成に使用する必要があります。ただし、開発者はスーパーグローバル変数のセキュリティ リスクも理解し、アプリケーションのセキュリティを確保するために必要な措置を講じる必要があります。

以上がPHP でスーパーグローバル変数を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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