[トップ] [掲示板] [F.A.Q.] [コラム] [ひとりごと] [利用規約] [履歴] | |
おみくじ |
スロットマシーンのようにくるくる変わる番号をストップボタンで止めて番号を決める「おみくじ」です。
まず、下のファイルをダウンロードして、解凍します。解凍すると、"loglog.log"、"omikuji.cgi"、"kabalib.pl"、"ip.dat"、"fuda.dat"の5つのテキスト・ファイルと、11個の.gifファイルができます。.gifファイルはdigitディレクトリの下になります。
※kabalib.plはVer.1.20以降を使ってください。
cgi-lib.plを入手します。
http://cgi-lib.berkeley.edu/
jcode.plを入手します。(ホームページ・サービスによってはPerlと一緒にインストールしてある場合があるようです)
ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/
"omikuji.cgi"をテキスト・エディタで編集します。
(※"omikuji.cgi"はEUCで書いてありますので、EUCが扱えるエディタでないと日本語部分が読めません。)
最低限、次の個所を変更する必要があります。
ftpソフトなどでサーバーのCGI用ディレクトリにアップロードしましょう。アップロードするとき、.cgiと.plはテキストモードで、.gifはバイナリモードで転送するのを忘れないでください。仮にcgi-bin/にアップロードしたら、次のようにディレクトリとパーミッションを設定します。
※kabalib.plはomikuji/の下でもOKです。
※jcode.plとcgi-lib.plはCGIスクリプトではしょっちゅう参照される定番なので、lib/ディレクトリとして独立させておくと使いまわせて便利です。
cgi-bin/ ├-- lib/ | ├-- jcode.pl | ├-- cgi-lib.pl | └-- kabalib.pl └-- omikuji (755)/ ├-- omikuji.cgi (755) ├-- ip.dat (666) ├-- loglog.log (666) ├-- fuda.dat (666) └-- digit/ ├-- 0〜9.gif └-- init.gif
設定が終わったら、ブラウザからCGIを設置したURLを開いてみましょう。上の例のようなディレクトリ構成なら、次のようなURLになります。
http://xxx.yyy.zzz/cgi-bin/omikuji/omikuji.cgi
"omikuji.cgi"の「設定、適当に変更してください」〜「設定はここまで」の間を適当に変更すると、見た目や動作をカスタマイズできます。
画像ファイルを使う場合は.gifファイルを指定して、先頭の「#」を消してください。指定しない場合は、壁紙はなし、その他はテキストで代替します。
#画像ファイル指定(不要ならコメントアウトか''にして) #$iBg1 = 'bg1.gif'; #ノーマル状態の壁紙。 #$iBg2 = 'bg2.gif'; #警告の壁紙。 #$iTitle = 'title.gif'; #タイトルのロゴ。
色も変更できます。壁紙を使わない場合は、サイトの雰囲気にマッチした背景色を指定しましょう。壁紙を使う場合には、その壁紙に似た背景色を指定しておくと、画像がブラウザに送られなかったとき(例えばブラウザで画像をダウンロードしない設定にしているなど)でも、見た目のイメージをいくらか保持できます。
#色指定 $cBg1 = '#FFFFFF'; #ノーマル状態の背景色(白) $cBg2 = '#FFCC66'; #警告の背景色(オレンジ) $cTx = '#006400'; #文字色 $cLi = '#8b0000'; #リンク文字色 $cVl = '#1e90ff'; #訪問済みリンク文字色
スロットマシーンのように切り替わる番号のインターバル・タイム、1日1回しか引けないか、どんどん引けるか、おみくじの文面の高さを変更できます。
"omikuji.cgi"には,、管理者がおみくじの文面を追加・削除するためのメンテナンス・モードがあります。メンテナンス・モードを活用するには、"omikuji.cgi"の「設定、適当に変更してください」〜「設定はここまで」の間にちょっとした設定をしておきます。
メンテナンス・モードに入るには、風がふけば...画面の[メンテナンス]をクリックします。
誰でも文面を追加・削除できては困るのでパスワードを付けます。パスワードの初期値"0123"は必ず変更しておきましょう。
メンテナンス・モードにログインすると、テンポラリのセッションIDがブラウザ側のクッキーに送られ、あとの操作が管理されますが、ブラウザがクッキーを受け付けない設定になっている場合には、正規にログインしたのかどうか判断できません。そういう場合には$setdelkeyに削除キーを設定しておいてください。$setdelkeyがあると、"omikuji.cgi"は追加・削除操作の度に「削除キー」を聞いてきます。
$setpass = '0123'; #メンテナンス・モードのログイン・パスワード $setdelkey = ''; #ワードの削除キー、クッキーが有効なら不要。
パスワードだけでは心配な場合は、自分のIPアドレスからしかメンテナンスできないように設定できます。$sethostに「111.222.333.444」のようにIPアドレスを記入してください。もし、自分のIPアドレスが固定でないときは、「111.222.333」のように決まっている桁だけ書いておけば大丈夫です。初期値".*"は何でもOKの意味です。
$sethost = '.*'; #ホスト名にこの文字列を含まないとメンテナンスできない。
CGIが出したエラーメッセージはログ・ファイルに記録できます。たまにはログをチェックしてちゃんと動いているか確認するとベターです。ログ・ファイルはEUCで記録されますので、PCに転送して中を見る時には注意してください。
このomikuji.cgiで初めて<TEXTAREA>タグを使うことになりましたが、開けてビックリ改行コードがわけ分かんないじゃありませんか。\nを<BR>に変換したはずなのに、ファイルに書き出すと<BR>も入ってるけど、改行もされてる!
これはスクリプトをデバッグしているのがWindows PCで、Windowsの改行が「キャリッジリターン\r+ラインフィード\n」だから、\nを変換するだけじゃ方手落ちだってこと。(送信側がUNIXならOKのはず。)
WindowsとUNIXで改行コードが違うのは知ってるけど、ftpでもPerlのchompでも適当に処理してくれるじゃない。置換だけダメなのは何故?
「こんなのOSか言語でカバーしてよー」とぼやきつつ、私にとってはCGIのバイブル『CGI基礎講座』を見たら、ドンピシャリの対策が載っていた。何だ、私が知らないだけで当たり前の話だったらしい。
データをブラウザから管理できるのがメンテナンス・モードなんですが、CGI本来の機能より、実はメンテナンス・モードの方が数倍面倒なんです。パスワードの認証、その後のセッション管理、CGIの本体の機能毎にガラッと変わる仕様に四苦八苦するわけです。ほとんどのバグはメンテナンス・モードに絡んで発生し、デバッグ時間の大半はこのために費やします。
メンテナンス・モードなんてやめて、ftpでデータファイルをダウンロードして、エディタで修正してからアップロードし直せば話は単純なんですけどね。それでもメンテナンス・モードをつけるのは、管理者といえどもweb上のデータをローカルで編集しなきゃいけないなんていうのは邪道だと、勝手に思っているからです。
2003/1/28 | Ver.1.00p | kabalib.plの重大なバグを修正。(Ver.1.20) |