かばの遊べるCGI ロゴ [トップ] [掲示板] [F.A.Q.] [コラム] [ひとりごと] [利用規約] [履歴]
おみくじ

■特徴

スロットマシーンのようにくるくる変わる番号をストップボタンで止めて番号を決める「おみくじ」です。

ruleご利用にあたって sample見本


■設置方法

(1)ダウンロード

まず、下のファイルをダウンロードして、解凍します。解凍すると、"loglog.log"、"omikuji.cgi"、"kabalib.pl"、"ip.dat"、"fuda.dat"の5つのテキスト・ファイルと、11個の.gifファイルができます。.gifファイルはdigitディレクトリの下になります。

※kabalib.plはVer.1.20以降を使ってください。

downloadファイルをダウンロード

cgi-lib.plを入手します。

http://cgi-lib.berkeley.edu/

jcode.plを入手します。(ホームページ・サービスによってはPerlと一緒にインストールしてある場合があるようです)

ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/

(2)CGIをカスタマイズ

"omikuji.cgi"をテキスト・エディタで編集します。
(※"omikuji.cgi"はEUCで書いてありますので、EUCが扱えるエディタでないと日本語部分が読めません。)

最低限、次の個所を変更する必要があります。

#!/usr/local/bin/perl
perlへのパス
$htmPath = 'omikuji.html';
[もどる]ボタンでジャンプするパス。
use lib '../lib';
"omikuji.cgi"から見て、cgi-lib.pl、jcode.pl、kabalib.plがあるパス。

(3)アップロード

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

(4)テスト

設定が終わったら、ブラウザからCGIを設置したURLを開いてみましょう。上の例のようなディレクトリ構成なら、次のようなURLになります。

http://xxx.yyy.zzz/cgi-bin/omikuji/omikuji.cgi


■もっとカスタマイズ

"omikuji.cgi"の「設定、適当に変更してください」〜「設定はここまで」の間を適当に変更すると、見た目や動作をカスタマイズできます。

(1)画像ファイルを変えよう

画像ファイルを使う場合は.gifファイルを指定して、先頭の「#」を消してください。指定しない場合は、壁紙はなし、その他はテキストで代替します。

#画像ファイル指定(不要ならコメントアウトか''にして)
#$iBg1 = 'bg1.gif';        #ノーマル状態の壁紙。
#$iBg2 = 'bg2.gif';        #警告の壁紙。
#$iTitle = 'title.gif';    #タイトルのロゴ。

(2)色を変えよう

色も変更できます。壁紙を使わない場合は、サイトの雰囲気にマッチした背景色を指定しましょう。壁紙を使う場合には、その壁紙に似た背景色を指定しておくと、画像がブラウザに送られなかったとき(例えばブラウザで画像をダウンロードしない設定にしているなど)でも、見た目のイメージをいくらか保持できます。

#色指定
$cBg1 = '#FFFFFF';         #ノーマル状態の背景色(白)
$cBg2 = '#FFCC66';         #警告の背景色(オレンジ)
$cTx  = '#006400';         #文字色
$cLi  = '#8b0000';         #リンク文字色
$cVl  = '#1e90ff';         #訪問済みリンク文字色

(3)動きを変えよう

スロットマシーンのように切り替わる番号のインターバル・タイム、1日1回しか引けないか、どんどん引けるか、おみくじの文面の高さを変更できます。

$intTime = 50;
番号を切り替えるインターバル・タイム。
$regIP = 1;
1だと、IPアドレスを記録して同じアドレスから1日1回しかくじを引けないようにします。0なら、何度でも引けます。
$height = 150;
おみくじの文面部分の高さ。1=1ピクセル。
$iWidth = 64;
番号用のgifファイルの幅。gifを変える場合には変更してください。
$iHeight = 60;
番号用のgifファイルの高さ。gifを変える場合には変更してください。

■やっぱりメンテナンス

"omikuji.cgi"には,、管理者がおみくじの文面を追加・削除するためのメンテナンス・モードがあります。メンテナンス・モードを活用するには、"omikuji.cgi"の「設定、適当に変更してください」〜「設定はここまで」の間にちょっとした設定をしておきます。
メンテナンス・モードに入るには、風がふけば...画面の[メンテナンス]をクリックします。

(1)パスワードを設定しよう

誰でも文面を追加・削除できては困るのでパスワードを付けます。パスワードの初期値"0123"は必ず変更しておきましょう。
メンテナンス・モードにログインすると、テンポラリのセッションIDがブラウザ側のクッキーに送られ、あとの操作が管理されますが、ブラウザがクッキーを受け付けない設定になっている場合には、正規にログインしたのかどうか判断できません。そういう場合には$setdelkeyに削除キーを設定しておいてください。$setdelkeyがあると、"omikuji.cgi"は追加・削除操作の度に「削除キー」を聞いてきます。

$setpass = '0123';             #メンテナンス・モードのログイン・パスワード
$setdelkey = '';               #ワードの削除キー、クッキーが有効なら不要。

(2)リモート・ホストを設定しよう

パスワードだけでは心配な場合は、自分のIPアドレスからしかメンテナンスできないように設定できます。$sethostに「111.222.333.444」のようにIPアドレスを記入してください。もし、自分のIPアドレスが固定でないときは、「111.222.333」のように決まっている桁だけ書いておけば大丈夫です。初期値".*"は何でもOKの意味です。

$sethost = '.*';   #ホスト名にこの文字列を含まないとメンテナンスできない。

(3)たまにはログをチェックしよう

CGIが出したエラーメッセージはログ・ファイルに記録できます。たまにはログをチェックしてちゃんと動いているか確認するとベターです。ログ・ファイルはEUCで記録されますので、PCに転送して中を見る時には注意してください。

$logfile = 'loglog.log';
ログのファイル名

■つけたり

キャリッジリターン+ラインフィード

この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)

[トップへ] [掲示板] [F.A.Q.] [コラム] [ひとりごと] [利用規約] [履歴]