PHP スーパーグローバル変数-$_SERVER

Webサイトにアクセス時にブラウザとサーバー間で通信を行なっています。
その際、ブラウザに表示される情報以外に「ヘッダー情報リクエストヘッダー情報)」があります。
今回は、それらの情報を確認するためのスーパーグローバル変数「$_SERVER」を解説します。

この記事の著者 ->S.E; です。

普段は、システム開発に必要なヒアリング、システムの要件定義、設計からプログラマとしてWebサイトやWebアプリケーションの開発、WordPressでのブログの執筆やサーバー運用・管理を行っています。

このページは「未経験の為のプログラミング講座 ゼロから始めるPHPプログラミング〜初級から実践編までを網羅〜」としてPHPの基本的な部分を【初級編】【中級編】【上級編】に分けて解説しています。最終的には簡単なフォームやシステム開発をフルスクラッチで行うことを目的としています。また、参考になる書籍なども紹介しています。

ヘッダー情報リクエストヘッダー情報)とは?

ブラウザ、サーバー間の通信時にブラウザがサーバーにリクエスストし、サーバーがブラウザにレスポンスする際にやり取りする情報が「ヘッダー情報(リクエストヘッダー情報)」です。

実際の情報を確認してみます。コマンドで

を入力しエンターを押下します。
「https://www.programming-se.com」にアクセスした際にやり取りされるヘッダー情報を確認できます。

リクエストヘッダー

レスポンスヘッダー

ヘッダー情報は「名前」で表示されています。
これらの情報を取得することで様々な目的に利用することができます。

$_SERVERを利用して情報を取得

$_SERVERで取得できる情報を全て表示するスクリプトです。
下記の内容をサーバーにアップロードしアクセスすることで結果を得られます。

下記が結果です。

$_SERVERで取得する情報も「名前」で表示されています。
名前を$_SERVER[‘*****‘]の「*****」へ記述することにより個別に取得することができます。

例)$_SERVER[‘SCRIPT_NAME’] => /test.php
例)$_SERVER[‘REQUEST_METHOD’] => GET

といった内容になります。$_GET$_POSTの値を取得する際利用していた「$_SERVER[‘REQUEST_METHOD’]」まさにこれにあたります。

$_SERVERの利用目的・方法

ではどのような時に$_SERVERを利用するのでしょうか?

POSTとGETの振り分け

$_SERVER[‘REQUEST_METHOD’]を利用してPOSTとGETの振り分けに利用することができます。
フォームからPOST形式でデータが送信された場合のみ処理したい時は

このように記述する子で振り分けが可能です。

ページ遷移の制御(リファラ)

指定のページに遷移する際、前のページが外部のサイトやローカルでないことを確認して処理を行うことができます。

アクセスしている端末によって表示するページを振り分ける(ユーザーエージェント)

アクセスしてきている端末がPCかスマートフォンか、またはmacOSなのかWindowsなのかを$_SERVER[‘HTTP_USER_AGENT’]で振り分けることができます。

※「strpos」は第一引数内に第二引数の文字列が存在する場所を確認する関数です。

アクセスログをとる

$_SERVER[‘REMOTE_ADDR’] アクセス元のIPアドレスを取得
$_SERVER[‘HTTP_USER_AGENT’] アクセス元のユーザーエージェントを取得
$_SERVER[‘PHP_SELF’] アクセスページを取得
などを利用して簡単なアクセスログをとることも可能です。

$_SERVERを利用してみて

$_SERVERは色々の条件分岐からログの取得など様々な用途に利用されます。
$_POSTや$_GETなどより利用頻度は低いですが、どのようなデータを$_SERVERを利用して取得できるかある程度理解しておくことをお勧めします。

created by Rinker
PHP7の基本構文から、クラス、DB連携、セキュリティ対策まで、しっかり習得! PHPプログラミングの標準教科書『独習PHP』が、最新のPHP7に対応。PHPでWebページ/アプリケーションを開発する際に必要な基礎的な知識、PHPの基本構文から、クラス、データベース連携、セキュリティまで、詳細かつ丁寧に解説します。
created by Rinker
時間がなくたって、プログラミングは学べます。学習を躊躇していた人たちに、既存の入門書で挫折した人たちに、「これならできる!」の最短カリキュラムを、土日の14時間で提供。まったくのプログラミング初心者が簡単なWebデータベースアプリを構築できるまでの成長コースを、手取り足取り、導きます。

コメントする

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)