環境変数・フォーム・クッキー

 CGIは、サーバーが設定する環境変数、フォームを経由して送られるデータ、クッキーなどを利用する事で実に多様な作業を行う事が可能です。
 このページではCGIが利用できる環境変数、フォーム、クッキーとその値を表示しています。
  1. CGIプログラムを組むときに使える環境変数の確認
     
  2. CGIプログラムがフォームやクエリ文字列やパス情報で実際に受け取ったデータの確認
     (制作中のCGIと同じ名前にして予定の場所に置きます。)
    ブラウザから受け取ったデータの確認  
  3. CGIプログラムがクッキーとして受け取ったデータの確認
     (制作中のCGIと同じ名前にして予定の場所に置きます。)
    クッキーの確認  
  4. 利用したい他のファイルへのリンクがわからないとき・・【現在この機能ははずしてあります。】
      注意:この処理は時間がかかります。
    ファイルリンクテスト
     
SERVER
GATEWAY_INTERFACE CGI/1.1 このサーバーの使用しているCGIのバージョン。詳細は、
http://hoohoo.ncsa.uiuc.edu/cgi/
SERVER_ADMIN webmaster@hpcgi.nifty.com

    このサーバーの管理者のMailアドレス

SERVER_NAME hpcgi1.nifty.com

    サーバーのドメイン名、わからなければIPアドレスが入ります。

SERVER_SOFTWARE ZWS サーバーの種類が分かります。
SERVER_PORT 80 TCPポート・・通常は80
SERVER_PROTOCAL 値なし World Wide Webで使用されるプロトコルでCGIがちゃんと動くのはこれがHTTPプロトコルだからです。
SCRIPT_FILENAME /cgi-bin/ENV_FORM.cgi

    このサーバーのファイル構成におけるこのCGIのパスを表示します。したがってhttpなどで示されるドキュメントルートとは異なります。

SCRIPT_NAME /Iruka/ENV_FORM.cgi

    ドキュメントルートにおけるこのCGIのパスで、再度このCGIを呼び出すときに使用できるのはこちらです。

http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi

PATH /bin: /usr/bin: /usr/local/bin

    このCGIが利用できるプログラムを探しに行くディレクトリが記述されます。
    これ以外のディレクトリにあるプログラムを利用するときは指定する必要があります。
    なお、SSIはこれより広いディレクトリを利用できます。

PATH_INFO 値なし URL***?abc=def・・と言うふうにURLの次の?以降に続くQUERY_STRINGの間に色々なデータを付ける事ができます。それがあればエンコードして表示されます。通常はなし
DOCUMENT_ROOT /cgi-bin

    HTTPプロトコルで渡されるドキュメントへのルート
    hpcgi1.nifty.com/のサーバーマシン上のディレクトリ

PATH_TRANSLATED 値なし

    上記のPATH_INFOとDOCUMENT_ROOTを一緒にした物です。次のような場合に使用します。

    • サーバーを変更する可能性がある。
    • CGIを移動する可能性がある。
    • 絶対パスが変更になる可能性がある。
HTTP REQUEST HEADER (ここからは訪問者側のデータ(リクエスト)です。)
AUTH_TYPE Basic 認証の方式、UNIXのMOSAIC以外はBASICのはず。認証ページにアクセスする場合に使用されます。
詳細
CONTENT_LENGTH 値なし POSTやPUTメソッドでデータが送られるときに、そのデータの大きさを示します。
REQUEST_METHOD GET CGIへデータの渡し方
CONTENT_TYPE 値なし
    要求ヘッダの後ろについているデータのタイプFORMで送られる場合は下記のようになります。
    aplication/x-www-form-urlencoded
QUERY_STRING 値なし
    もちろん?の後に続くデータです。これを自分でエンコードして送る事もできますが、YUK!ファクタ(URL欄に表示されてしまう)と長さの制限があります。1,024バイト以下
REMOTE_ADDR 38.107.179.240
    このCGIを呼び出したリモートのマシンのIPアドレスが表示されます。
REMOTE_HOST 38.107.179.240
    このCGIを呼び出したリモートマシンのドメインアドレスが入っています。
    上記と同じく、PPPやDHCP接続の場合は接続のたびに変わる事があります。
REMOTE_IDENT 値なし
    このCGIのあるホストとリモートのホストの両方がIDENTデーモンを実行しているときだけ値があります。(最近のサーバーは実行しません。)
REMOTE_USER 値なし
    401 Unauthorized Accessまたは411 Authorization Refuseの応答に際してユーザー名とパスワードを入力して応答したときにのみ表示されます。
HTTP REFERER
HTTP REFERER 値なし
このページへリンクしてきた元のページ。いたずらを防止するためにきわめて有功ですがすべてのブラウザがこれを送るわけではない事に注意が必要です。
なお、直接このURLをよばれた場合は再度下記をクリックしてください。
http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi
HTTP_USER_AGENT CCBot/1.0 (+http://www.commoncrawl.org/bot.html)
    ブラウザのコードネームが入っています。
HTTP_ACCEPT text/html, application/xhtml+xml, text/xml;q=0.9, text/plain;q=0.8, image/png, */*;q=0.5
ブラウザが理解できるMIMEタイプ
HTTP_ACCEPT_CHARSET ISO-8859-1,utf-8;q=0.7,*;q=0.7
ブラウザが理解できる文字コード
HTTP_ACCEPT_LANGUAGE en-us, en;q=0.5
ブラウザが理解できる文字コード
HTTP_FROM 値なし
HTTP_IDENT 値なし

データは、PATH_INFOで渡すこともできます。動的にページを作成するときや部分識別子(#以降のページ内アンカー)を使うときは、標準入力かPATH_INFOを使います。
STDIN(標準入力)
(URL encorded)
 これは環境変数ではなくて、標準入力から受け取るデータで、REQUEST_METHODがPOSTとPUTの場合に
その値があります。
 ここに表示されるデータは下記スクリプトでエンコード済みです。
read(STDIN, $buffer, $CONTENT_LENGTH);
$buffer =~ tr/+/ /;
$buffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$buffer =~ s/\n//g;
$buffer =~ s/\r//g;
<STDN>標準入力
$ENV{'QUERY_STRING'}
PATH_INFO
PATH_INFOのデータ値なし
値なし
このCGIを呼び出した後、そのURLの後ろに名前と値を~でつないで、それを/で区切る。
例) http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/name~tanaka/sex~male

FORM
フォームの送信結果をテストしてみましょう。
こちらはPOST・・標準入力で送信されます。 こちらはGET・・URLの一部として送られます。
お名前 :
性別 : 男 <---->
好きな色 : 赤
文章を書く
お名前 :
性別 : 男 <---->
好きな色 : 赤
文章を書く
NAME VALUE

COOKIE(クッキー)

 このページに来られたとき、このページ(SCRIPT_NAME)に一致するクッキーがあればその値はブラウザからHTTPヘッダーに加えて送信され、サーバーの環境変数に取り込まれます。
 このクッキーは原則として、サイズは4kb以下、一つのドメインに対して20個以下、クライアントで保存できるクッキーは最大300個までという制限があります。
 したがって一つのクッキーの4Kb以下にできるだけ多くの情報を組み込む工夫が必要になります。
$ENV{'HTTP_COOKIE'}
このCGIのURLを直接呼び出した場合やクッキーを消去した場合、クッキーがありません。
下をクリックするとクッキーが確認できます。
クッキーの設定と確認

このCGIが受け取れるすべてのクッキーの消去 | このCGIが発行したクッキーの消去

 このCGIが受け取れるすべてのクッキーの消去をクリックするとこのサイトで発行された、ここに表示されているもすべてのクッキーも削除されます。
 また、必ずしもすべてのクッキーが消去できるとも限らないようです。(調査中)

38.107.179.240のクッキーから・・
COOKIE NAMECOOKIE VALUE

 認証が必要なページの各ページにアクセスするときに移動するたびに認証を求められる事はありません。たとえばBASICと言う方法の場合は、サーバーがWWW-Authenticate応答ヘッダを送り、ブラウザはAuthorization要求ヘッダを(Authorization: Basic ahrkjwgtkhksil+kiw)と言う形で返します。認証されるとブラウザは次のページに進むとき認証確認(Basic cookie)をつけてファイルを要求するため、1ページ毎にIDやパスワードを要求される事はありません。(パソコンから離れるときは、ブラウザを閉じましょう。)





TOP | 目次 | TOP | BACK


Criated by ichiya.com
;