はじめに
前回に続きPHPスーパーグローバル変数の記事を書いていきます。
今回は$_SERVER
の勉強です。
$_SERVER
$_SERVER
にはヘッダ情報が配列型式で格納されています。
ヘッダ情報はフィールドと値のペアとして「フィールド名:値」のように扱われます。
リクエストヘッダのフィールド
ヘッダフィールド | 内容 |
---|---|
Host | リクエスト先のサーバー名。 |
User-Agent | Webブラウザの情報。 |
Accept | 利用可能なアプリケーションやメディアタイプ。 |
Accept-Language | クライアントが利用可能な言語。複数指定し、優先度をつけることが可能。 |
Accept-Encoding | 利用可能なエンコーディング型式。 |
Accept-Charset | 利用可能な文字セット。 |
Referer | 直前にリンクされていたURL。 |
Cookie | クライアントに保存されているクッキーデータ。 |
レスポンスヘッダのフィールド
ヘッダフィールド | 内容 |
---|---|
Location | リダイレクト先のURL。クライアントに別のURLへの移動を促す。 |
Server | サーバーアプリケーションの種類。 |
WWW-Authenticate | クライアントに認証を要求。 |
Etag | エンティティタグ。リソースを特定するための情報。 |
エンティティヘッダのフィールド
ヘッダフィールド | 内容 |
---|---|
Content-Type | リソースのタイプ。 |
Content-Encoding | リソースコンテンツのエンコード方法。 |
Content-Length | コンテンツのサイズ。単位はバイト。 |
Expiires | コンテンツの有効期限。 |
Last-Modified | コンテンツの最終更新日時。 |
一般ヘッダのフィールド
ヘッダフィールド | 内容 |
---|---|
Cache-Control | キャッシュの取扱に必要な指示や情報。 |
Connection | 接続の永続性情報。 |
Date | コンテンツの作成日時。 |
Transfer-Encoding | コンテンツの転送エンコーディング型式。 |
リクエストメッセージからヘッダー情報を抜き出す
mb_strpos()関数
文字列の中に指定した文字列が最初に現れる位置を返します。
構文
mb_strpos ($haystack, $needle [$offset, $encoding])
パラメーター | 内容 |
---|---|
$haystack(string型) | 調べたい文字列。 |
$needle(string型) | 検索する文字列。 |
$offset(int型) | 検索オフセット。省略した場合0。 |
$encoding(string型) | 文字エンコーディング。省略した場合、内部で使用されている文字エンコーディングを使用する。 |
戻り値:int型の値
文字列の中で検索文字列が最初に現れる位置を数値で返す。
見つからない場合はFALSEを返す。
サンプルプログラム
RequestHeader.php
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>sample</title>
</head>
<body>
<table border="1">
<?php require_once 'Escape.php'; ?>
<?php
foreach ($_SERVER as $key => $value) {
if (mb_stripos($key, 'HTTP_') === 0 ) {
?>
<tr>
<th align="left"><?php es($key); ?></th?
<td align="left"><?php es($value); ?></td>
</tr>
<?php
}
}
?>
</table>
</body>
</html>
上記で作成たページへアクセスするとリクエストヘッダーの情報が表示されます。
レスポンスヘッダーを設定して別のURLへリダイレクトさせる
header()関数
HTTPヘッダーを送信します。
構文
header ($str[,$replace, $http_response_code])
パラメーター | 内容 |
---|---|
$str(string型) | ヘッダーフィールドとその値を「フィールド名:値」の型式で指定する。 |
$replace(boolean型) | オプション。前に送信された類似のヘッダーを置換するか、同じ形式の二番目のヘッダーを追加するか指定する。 デフォルトはTRUEで置換を行う。 |
$http_response_code(int型) | オプション。ステータスコードを強制的に指定する。 |
サンプルコード
location.php
<?php
header('Location: http://localhost/sample/RequestHeader.php');
?>
location.php
へアクセスするとリダイレクト先のRequestHeader.php
が表示されます。
(header()のパラメータは自身の環境に合わせてください)
最後に
MANP
では正常に動作しませんでした。
私はIntelliJ
のPHP Built-in Web Server
で動作確認をしました。
参考:IntelliJですばやくPHP開発環境を構築する