ホームページ作成・CGI_________ |
CGIの予備知識1 |
ホームページ閲覧のシステム
ホームページを開設している方ならすでにご存知の通り、ホームページのデータはすべてWWWサーバーに置いてあり、ホームページ訪問者はブラウザを使ってホームページを見るときそれにURL指定することにより手元のパソコンに転送し再生・表示を行っています。このWWWサーバー内のデータを制御しているソフトウエアのことをhttpd(httpデーモン)といいます。httpdの種類はいくつかありますが、多くのプロバイダがUNIXをサーバーとしている場合が多いため、NCSA-httpdかApache(アパッチ)のどちらかを使用していると考えてよいでしょう。
このhttpdはデータを拡張子により区別しているため、従来のHTMLだけで書かれたページというのは、訪問者からURL指定されたものを単に送り返すのみの処理となります。従って、通常のホームページというものは制作者が書いたスクリプトをそのまま表示するだけとなります。
CGIを利用した場合
従来のHTMLスクリプトで書かれたホームページは作成したページの内容そのままを単純にブラウザに表示するのに対して、CGIを利用した場合は表示内容が動的に変化するページの実現が可能となります。例えばPerlで書かれたCGIスクリプトは、httpdによってサーバー内のPerlに渡され、解析・実行した結果をhttpdに返します。つまり、訪問者のブラウザに表示されるのはサーバー内で何らかの処理がなされたものということになります。(CGIではアクセスカウンタや掲示板等、演算、ファイル書き込み、並び替えなどの処理を行うことが出来ますが、CGIスクリプト自体が実行するのではなく、あくまでもPerlというインタープリタが実行します)
SSIを利用した場合
CGIが直接的に実行されるのに対して、SSIはSSI命令文を介して間接的にCGIを実行します。SSIを実行するには前もってHTMLスクリプトの中にコメント文の形で「SSI命令文」を書いておく必要があります。SSI命令は簡単で、通常のHTMLスクリプトの中に一行のタグを書くだけでよいので、アクセスカウンタや、訪問者がそのページを訪れた時点の現在時刻などを表示させるのによく使われます。一般に「SSI命令文」の書いてあるファイル名は「***.shtml」となります。
CGI、SSI利用の注意点
これらは単にデータを転送するだけのHTMLと違いサーバー内で一旦処理してからデータを送り出すため、サーバーに負荷が掛かることになります。特にリロードを頻繁に繰り返すチャットや、大量のデータを検索するプログラムまた、CGIプログラムの内容によっては、サーバーのセキュリティが侵されたり、サーバー自体を停止させてしまう惧れがあります。
CGIスクリプト
CGIはWWWサーバーが解釈、実行できる言語であれば何でもいいのですが、たいていの場合Perlやシェルスクリプト(Sh)、C言語で書かれています。それぞれ一長一短があり、例えばPerlの場合言語自体も比較的易しく柔軟性もありますが、実行速度が遅い、サーバー内実行時のメモリ消費量が大きい等の欠点があります。逆に、C言語の場合だとサーバー内での実行速度は速いがコンパイル言語であり、言語自体も難しい、その上サーバー内でコンパイルすることになり危険性を伴うため、プロバイダによっては使わせてくれません。
CGI、SSI利用の前に
CGI、SSIを利用する前に調べておくべきことが何点かあります。
CGI設置時の注意事項
書き込み可能なファイル(例えは掲示板のログ書き込みファイル等)でパーミッション666指定でしか実行できないファイルの名前は極力判り難い名前を付けましょう。特に有名サイトのフリーのCGIのログファイルをデフォルト名のまま使用するのは危険です。これはログファイルの名前とパスさえ分かってしまえば第三者が様々な方法を使ってファイルの中身を改ざんすることが可能になる場合があるからです。通常、掲示板等のCGIでは
などと付いているケースが多いのですが、こういった場合にはbbs2569.logとかbbs45df8.datといった具合に他の人に推測し難い名前に変更しておくのが正解です。
また、CGIディレクトリには必ず空のindex.htmlファイルを置くようにしましょう。これはブラウザでCGI実行ディレクトリを直接入力した際にインデックス表示されることによりファイル名が判ってしまうことを避けるためです。
その他、掲示板などでいたずら書きをされたりして困ることがあります。そういった場合にはアクセス制限をかけると効果的です。アクセス制限についての詳細は、アクセス制限を参照ください。
必要なソフトやツール
・ホームページ閲覧のためのブラウザ:これはパソコンを買えば必然的についてきます。CopyRight (C) 2000-2013 by T.Shiraishi All right reserved 無断転載禁止/リンクフリー |