PHPのWebアプリケーション向け機能

Last-modified: 2007-08-05 (日) 18:27:47

特殊変数 (>= 4.1.0)

$_SERVER 変数

スーパーグローバルまたは自動グローバルな変数。

取得できる値のうち、使いそうなものだけリストアップ。

PHP_SELF実行しているファイル名。DocumentRootからのPATH
argv引数。コマンドライン or GET。
argc引数の数。コマンドライン or GET。
REQUEST_METHODGET , POST, etc
QUERY_STRINGGETパラメータ
DOCUMENT_ROOTそのまま
HTTP_ACCEPT_CHARSETヘッダ
HTTP_ACCEPT_ENCODINGヘッダ
HTTP_ACCEPT_LANGUAGEヘッダ
HTTP_HOSTヘッダ
HTTP_REFERERヘッダ
HTTP_USER_AGENTヘッダ
HTTPSHTTPSでアクセスしてれば 空以外となる
REMOTE_ADDRクライアントIP
REMOTE_HOSTIP逆引き
REMOTE_PORTポート番号
SCRIPT_FILENAMEファイルの‘絶対’パス
PATH_TRANSLATEDファイルのパス
REQUEST_URI
PHP_AUTH_DIGESTAuthorizationヘッダの値
PHP_AUTH_USERBASIC/Digest認証のユーザ名?
PHP_AUTH_PWBASIC/Digest認証のパスワード?
AUTH_TYPEHTTP認証の認証形式 (BASIC or Digest ?)

$_ENV

スーパーグローバルまたは自動グローバルな変数。

環境変数が入る。

$_COOKIE

スーパーグローバルまたは自動グローバルな変数。

$_GET

スーパーグローバルまたは自動グローバルな変数。

GETパラメータを取得できる。

連想配列で格納されるため、同じパラメータ名が複数渡されると、最後の1つしか取得できない。

foreach($_GET as $key => $value){
  echo $key . "  =>  " . $value . "<BR>\n";
 }

$_POST

POSTデータを取得できる。

スーパーグローバルまたは自動グローバルな変数。

foreach($_POST as $key => $value){
  echo $key . "  =>  " . $value . "<BR>\n";
 }

連想配列で格納されるため、同じパラメータ名が複数渡されると、最後の1つしか取得できない。

但し、php://input で取得したPOSTデータを自分でパースすれば、同じ名前でもなんとかなる。

$_FILES

スーパーグローバルまたは自動グローバルな変数。

ファイルアップロード用。

$_REQUEST

$_GET, $_POST, $_COOKIE, $_FILES がまとめて格納される。

スーパーグローバルまたは自動グローバルな変数。

$_SESSION

セッション変数。

スーパーグローバルまたは自動グローバルな変数。

セッション変数の使い方は、PHPでのセッション管理?を参照。

$GLOBALS (>=3.00)

グローバルスコープで定義されている変数が格納された、連想配列。

スーパーグローバルまたは自動グローバルな変数。

$php_errormsg

直近のエラーメッセージ。
エラー発生箇所と同一スコープで、track_error = on にしてある場合に有効。

$HTTP_RAWS_POST_DATA

生POSTデータ。

但し、データ全部が値として入るため、メモリ消費量が大きく、この変数の使用は推奨されない。php://input のほうがよい。

$http_response_header

レスポンスヘッダ。

その他

ページ内で変数を出力する

<?php echo $_SERVER["PHP_SELF"];  ?>
<? echo $_SERVER["PHP_SELF"];  ?>
<?= $_SERVER["PHP_SELF"];  ?>

2つめと3つめは、short_open_tag が On になっている必要がある。

asp_tags を On にすると、ASP形式の <% %> や <%= %> が使えるようになる。

全てのスクリプトで共通の処理を行う

php.ini の

auto_prepend_file = "/home/naka/www/php/ids.php"
auto_append_file =

を使う。上の例のauto_prepend_file に設定してあるのは、PHPIDSを起動するスクリプト。

入出力フィルター

http://www.php.net/manual/ja/wrappers.php.php より

  • php://stdin
  • php://stdout
  • php://stderr
  • php://output
  • php://input
  • php://filter (PHP 5.0.0 以降で使用可能)
  • php://memory (PHP 5.1.0 以降で使用可能)
  • php://temp (PHP 5.1.0 以降で使用可能)