CGIにもTry!

・・・なんて言っても,正直なところ,CGIとスクリプトの違いすら,良くわかんないんだよね〜〜〜.とりあえずわかっていることは,

たったこれだけ.

ホームページのフリーレンタルスペースって,CGI使用不可のところが多いんだよね.

でもまあ,探せばけっこうある.わたしが使っているTkCity
http://www.tkcity.com/

とか,トクトク
http://tok2.com/

とか,Tripod
http://www.tripod.co.jp/

などなど.ほかにもいっぱいあるはずだ.使用可能なサイズや広告の表示方法など,条件はだいぶ違うけど.

とりあえず,TkCityは広告が表示されるのが上部一箇所だけという点で,わたしは気に入っている.トクトクは上下二箇所だし,Tripodはポップアップウィンドウなのでちょっとうっとうしい.でもまあこのあたりは好みの問題で,ホームページ本体に余計なものがつかないからポップアップウィンドウのほうがいいって人もいる.フリーソフトでポップアップウィンドウを消せるのもあるしね.

ともあれ,せっかくCGIの使えるスペースを借りたんだから,使わなきゃ損だ.・・・とは思うものの,XMLもやりたいしほーりっぱなしのLinuxもなんとかしなきゃいけないし,あんまり手を広げまくるのもねえ・・・.

CGIっていったい何なの?

自分でわざわざ作らなくても,世の中,よくできたCGIがフリーでいくらでも出回っている.ありがたいことである.

そういうわけでフリーのCGIを探し回ってホームページをあっちこっち覗いているうち,CGIに関する知識が多少は増えた.ような気がする.ゼロが1になっただけという気もするけど.

たとえば,CGIは何の略か.これは,Common Gateway Interfaceだそうである.

そして,CGIとスクリプトの違い.一番違うのは,プログラムを実行する場所である.CGIの場合はWWWサーバーで,スクリプトの場合はローカルのPCなんだそうだ.

ホームページを訪れた人がCGIを呼び出すと,WWWサーバがCGIを実行して結果を出力する.このとき,ファイルの入出力を伴う場合,そのファイルもWWWサーバの中に作られる.WWWサーバによってCGIが使えるのと使えないのとがあるのは,このせいだ.WWWサーバがプログラム実行やファイル入出力を許可していなければCGIは使えないのである.

スクリプトの場合はローカルで実行するし,ファイルの入出力もないからサーバーの設定は関係ない.スクリプトの実行を許可するかどうかは,ローカルのブラウザの設定による.

それにしても,フリーのCGIプログラムって,Perlがほとんどだ.Perl以外のもあるらしいんだけれど,見つけきれなかった.C言語とかC++とかシェルとかASPとかがよく使われているらしい.ASPってのは聞いたことないけど,時々ホームページ見てると,*.aspっていうファイル名のものがあるから,あれかなあ?

Perl・・・Practical Extraction and Report Languageは,やっぱり「真珠」をイメージしてるのかな.つづりは少し違うけど.そーいや「るびー」ってのもきいたことあるし.どういう関係なんだろう・・・

パーミッションのお話

とりあえずはフリーソフトをそのまま設置するわけだけれど・・・ふつうにHTMLをアップロードするのと少し違うのは,「パーミッション」というものがある点だ.これは,自分が作ったファイルをほかの人が操作できるかどうかを決めるもので,"701"とか"666"といった三つの数字で構成されている.

Windows98では見たこともない数字なんだけど,UNIX系のOSを使っているとこの数字は避けては通れない.Linuxやっててよかった〜〜〜.

UNIXでは,普通,ファイルにアクセスする人を三つのグループに分ける.「ファイルの所有者」,「ファイルの所有者を含むグループ」,「それ以外の人」だ.

この三つが,パーミッションの三つの数字に当たる.たとえばパーミッションが"640"の場合,「ファイルの所有者」は"6",「ファイルの所有者を含むグループ」は"4",「それ以外の人」は"0"となる.

"6","4","0"それぞれの数字は,「読み出し」「書き込み」「実行」のうちどの組み合わせを許可するかを示している.

これには,二進数の知識が少しばかり必要になる."6"は二進数では"110","4"は"100","0"は"000"と,三つの0または1の組み合わせで表せるわけだけれど,この"0"や"1"それぞれが「読み出し」「書き込み」「実行」の許可・不許可を表しているのだ.

読込 書出 実行 十進数表示
1(許可) 1(許可) 0(不許可) 6

読み込み・書き出し・実行すべて許可なら,"111"="7"となるし,すべて不許可なら"000"="0"となる.まとめると,パーミッション"640"は,

ファイルの所有者 所有者を含むグループ その他の人
パーミッション 6 4 0
読み込み 1(許可) 1(許可) 0(不許可)
書き出し 1(許可) 0(不許可) 0(不許可)
実行 0(不許可) 0(不許可) 0(不許可)

を表している.

ホームページにアクセスする人は,普通,「その他の人」にあたる.そして,CGIはプログラムだから実行許可が必要だし,ログファイルは読み出し・書き込みの両方の許可がないとダメだ.こんなふうに,パーミッションを適切にしないとせっかくのCGIが全然実行できなくなってしまう.

フリーソフトでCGI

まずは,JavaScriptなんかでは絶対に作れないアクセスカウンタを設置する.アクセスカウンタは今までに来てくれた人の数をサーバ側にファイルとして持っていないといけないから,ローカルで実行するJavaScriptにはちょっと無理な話だ.

トクトク・インターネット寺子屋
http://tera.tok2.com/

のサンプルアクセスカウンタ"counter.zip"をいただいてきた.これを解凍すると,"ct.cgi"と"gifcat.pl"ってのができる."ct.cgi"がカウンタ本体,"gifcat.pl"が,数字に対応するgifファイルをHTMLに表示できるように連結するライブラリ・・・らしい.

パーミッションの設定はもちろん,アップロードの仕方まで懇切丁寧に説明してくれてあって,全く至れり尽せりである.

トップページにct.cgiを指すタグを入れ,CGIとともにアップロードする.ブラウザで読み込んでみると・・・OK,数が増えてる! ちゃんと動いてる.

CGIを実行した後,サーバには"log.txt"ってファイルができていた.これが,現在のカウント数が入っているファイルだ.

カウンタの成功に気をよくして,掲示板の設置も試みてみる.

KENT WEB
http://www.kent-web.com/

には,機能豊富でバラエティに富んだCGIがいっぱいある.ここから掲示板を拝借することにした.

"aska.lzh"を解凍すると,"aska.cgi","aska.log","jcode.pl"ができる."aska.cgi"は,掲示板本体,"aska.log"は書き込みを保存するためのファイル,"jcode.pl"は日本語を処理するためのライブラリである.

これらのファイルをアップロードするほか,lockディレクトリという空のディレクトリも作らなければならないらしい.何に使うんだろう?

ま,ともかく,こうして,自分で何にもしなくても,それどころか中身が何にもわかっていなくても,機能豊富で見栄えのよい掲示板が出来上がった.

でも,やっぱり,せっかくだから,自分で何か作ってみたいなあ・・・.

教えてCGI

購読していたトクトク・メールマガジン「日刊!トクトク」
http://magazine.tok2.com/

の,火曜日コーナー「教えてCGI!」で,「連載:掲示板を作ろう」とゆーものがはじまった.しかも,サンプルCGIの"mybbs.cgi"が,見たところけっこう短く,これならわたしにもわかるかも・・・と,ついその気になってしまったのである.

mybbs.cgiは,まず最初に,jcode.plとcgi-lib.plっていうライブラリを読み込んでいる.jcode.plってのはaska.cgiにも使われていた,日本語を処理するために必要なやつだろうけど,cgi-lib.plって何をやるんだろ? コメントが英語でよくわからない・・・.

ライブラリファイルはよくわからないけど,mybbs.cgi本体は,初心者用のきわめてシンプルなもので,説明も懇切丁寧でわかりやすい.

  1. ログファイルを読み込む
  2. 投稿フォームと一緒に最新10個のログを表示
  3. 書き込みがあったらログファイルに書き込むと同時にログを表示
  4. 改ページ要求があったら前(後ろ)10個のログを表示

説明文だけ読んでいると,なんとなくわかったような気になってくる.

とゆーことは,いまありがたく使わせていただいている,フリーの掲示板CGIのaska.cgiも読めるかも?

その気になって,aska.cgiをエディタで開いてみた.

う.変数宣言が長い・・・しかも何に使うのかさっぱりわからない・・・.method形式とか,タグ許可とか,ロックファイル機構って,何これ?

プログラム自体も,全然違う.アクセス制限とか,ワード検索とか,管理モードとか,クッキーとか・・・

う〜〜ん,かなり無謀だったみたい.

サンプルCGIにアクセス!

トクトクメールマガジンのサンプルCGIである.
http://www23.tok2.com/home/nitok/Tue/cgi-bin/mybbs/mybbs.cgi

さすがに,最小限の機能しかないだけあって,しょぼい・・・

でも,初心者にとってはかえってありがたい.あんまりごちゃごちゃした機能なんかついてたら,プログラム読んでも何がなんだかわからないもん.

書き込みもしてみる.うん,ちゃんと標示されるし.

・・・あれ?

投稿したあと,ブラウザの「更新」をなにげに押したら・・・全く同じ書き込みがふたつもされてしまった.なんで?

原因を突き止めたいけど,あんまり繰り返すとわたしの書き込みが延々と続いて,「荒らし」になっちゃうと困るし.しかもこの掲示板,シンプルすぎて投稿削除の機能もついてないんだよな〜〜〜.

そんなわけで,CGIプログラムを,TkCityのわたしのフリースペースにアップロードして様子を見てみることにする.

http://www6.tkcity.net/~yuri/cgi-bin/mybbs/mybbs.cgi

適当に書きこんでみてから,更新,と.

・・・やっぱり,更新を押した数だけ,投稿が繰り返される.

怪しいのは,どうやらURLのようである.

http://www6.tkcity.net/~yuri/cgi-bin/mybbs/mybbs.cgi?name=yuri&subject=&mail=&url=&content=test&act=regist

つまり,URLのうしろにわたしが投稿した内容が引数みたいにくっついているのだ.そして引数ごとまた更新しているものだから,何度も何度も投稿って羽目になっているんだろう.

更新のときにこの引数を消すようにすればいいんだろうけど・・・どうすりゃいいの?

電話代が・・・!

それにしても,CGIプログラムって,わたしのパソコンの上で実行できないから面倒くさいなあ.CGIを一行いぢくりまわすたびにいちいち電話をかけてWWWサーバにアップロードして・・・お金もかかるし.

このプログラムが,わたしのパソコン上で実行できたら一番いいんだけど・・・

トクトクのメールマガジンにも,自分のパソコンにWWWサーバを構築してCGIを使えるようにする方法が載っていた.ま,よーするにPerlとWWWサーバをインストールすればいいんだけど・・・どっちもフリーソフトがいくらでもあるからダウンロードしてくりゃいいんだけど・・・.

ダイヤルアップでダウンロードするのはちょっときつすぎる・・・.

というわけど,CD-ROMつきの本でも買ってくることにした.

1  

TO HOME