プロが教える店舗&オフィスのセキュリティ対策術

http://www.test.cgi/index
のようになっているものを見かけるときがあります。普段は
http://www.test.cgi?mode=index
などしているのですが、どのような仕組みになっているのでしょうか?
これはPerlに限らず、CGIとして動作するものなら実装できるのでしょうか?
疑問に思ってしまったので、ご回答のほどをよろしくお願いします。

A 回答 (3件)

PATH_INFOと呼ばれる情報です。

Perl/CGIであれば環境変数の$ENV{'PATH_INFO'}で取得する事が出来ます。クエリー(?xxx)が$ENV{'QUERY_STRING'}で取得出来る事と同じ要領です。組み合わせてtest.cgi/path/info?query=stringのようにする事も出来ます。(それぞれ上記の環境変数で別々に取り出せます。)

他の言語に関しても取得出来ます。言語名とPATH_INFOで検索をかけてみてください。(例えば『php path_info』等)
    • good
    • 0
この回答へのお礼

遅くなりました…
なるほど、PATH_INFOですか。
PATH_INFOの使い方が分からなかったのですが、分かりました!
どうもありがとうございました!

お礼日時:2005/01/22 21:06

PHPなら、HTMLのformタグでGET形式を指定した時に


そのような形になります。
このOKWeb(教えてgoo)もページ移動などを
リンクで行っている関係からなのかその形式となっています。
なのでそれぞれの値が何を示しているのか分かれば、
何ページ先でも直接飛んでいくことができたりします。

PHPでは$_GET[(変数名)]で取得できるようですが、
バージョンによって異なってもいるようです。

また、アドレス欄に表示されてしまう関係から
直接入力によりCGIを誤動作させることもできてしまいます。
なので、使用時には注意が必要な場面も発生してきます。

この回答への補足

PHPも面白そうなので勉強したいと思っています。
お答えありがとうございました。

補足日時:2005/01/22 21:06
    • good
    • 0

Webサーバー(apache等)にはaliasという、名前の置き換え機能があります。


また、ファイル名が省略されたときに表示するindexファイルを何にするか指定する機能があります。

このあたりを使ってるのではないでしょうか?

http:/www.hogehoge.com/index
http:/www.hogehoge.com/test.cgi?mode=index
なら、indexをtest.cgi?mode=indexに置き換えてるのかな?と思うのですが。
お尋ねの例みたいにドメインにcgiと入る例は見たことがないので、自信なしです。
    • good
    • 0
この回答へのお礼

aliasとはまた別なのではないかと思っていたのですが、PTH_INFOというものを利用している模様です。
お答えありがとうございました。

お礼日時:2005/01/22 21:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!