============================================================================== gwbbs.pl - Gloriosa 共通コード ============================================================================== 最終更新日:2003-01-14 14:05 ■概要 このファイルに全てのスクリプトで使用する共通コードを収める. ■各サブルーチンの仕様 ・adminpass_check 管理者パスワードが合致するかどうかを少しの手間で確認することが 出来る. &adminpass_check($PASSWORD); $PASSWORD に平文のパスワードを入れると,$passwd_flag に結果に 応じて返り値が入る. その返り値は以下の通り. 0: パスワードが一致しない 1: パスワードが一致 2: パスワードが決定されていない このほかに特別な機能はない. このサブルーチンは $passwd_flag を返り値として返すので,呼び出 し元でそれをうけるようにコーディングすること. ----------------------- 例) パスワード認証を行う. &adminpass_check("PASSWORD"); if ($passwd_flag == 0) { print "パスワードが違います."; } elsif ($passwd_flag == 1) { print "パスワードが一致しました."; } elsif ($passwd_flag == 2) { print "パスワードが入力されていません."; } ----------------------- ・load_inifile config.pl で指定された設定ファイルを読み込み,連想配列変数 $ini{XXX} にその内容を格納します. 書式: &load_inifile('0/1'); 0 もしくは 1 を与えることにより,< > の & マークを & でメタクオートします.. これは,管理者設定でフォーム内の < > がメタクオートされ ないための苦肉の回避策です. 0 の場合は省略可能. XXX は 設定ファイルが NAME:VALUE\n という形で形成されているので,その NAME が XXX にあたります. ※\n は LF コード ただし例外もありますので,詳しくは該当のサブルーチンを見て下さ い. ----------------------- 例) 設定ファイルを読み込み,その中の text 属性を出力する. &load_inifile print $ini{'text'} ----------------------- ・save_inifile 管理者設定で Submit された情報を保存する. 保存する際の文字変換 (URLエンコードや文字の連結など) はこの部 分で一括して行われる. 設定を保存する際の書式は以下の通り. ----------------------- NAME:VALUE\n ----------------------- 1つの設定は \n (LF) で終了し,複数にわたる改行は \r (CR) で改 行する. 保存が完了すると META タグで自動的に掲示板へ飛ばす仕様になって いる. ・encode_passwd パスワードを暗号化する. &encode_passwd("PASSWORD"); とすることで,$rmkey に暗号化されたパスワードが格納されるので それを使用すること. ----------------------- 例) パスワードを暗号化する. $password = 'PassWord'; # 平文のパスワードを代入 &encode_passwd($password); # パスワードを暗号化する print $rmkey; # 暗号化されたパスワー ドが表示される ----------------------- ・error エラーメッセージを表示する. &error("ファイルが読み込めません.$log_file"); 括弧の中はダブルクオーテーションで囲うことにより変数展開を行う ことも可能. ----------------------- 例) エラーメッセージをブラウザに表示する. &error("エラーメッセージ"); ----------------------- ・filelock ファイルロックを行う. このファイルロックは簡易ファイルロックなので,信頼性は enhancedfilelock.pl よりは劣るが,どのプラットフォームでも使用 可能なのが売りである. 通常,ファイルロックはファイルの書き込みを行う直前に実行され, サブルーチン「unlock」(後述) とペアで使用する. ----------------------- 例) ファイルロックを行い,ログを保存する. &filelock; open(LOG,"log.txt"); print LOG "ろぐろぐ〜♪"; close(LOG); &unlock; ----------------------- ・unlock ファイルロックの解除を行う. やっていることは unlink $lockfile; だけのこと.(ぉ ・make_date 現在の日付を生成します. 書式: $data = &make_date; 生成された日付は $data に格納されます. 日付の書式は YYYY年MM月DD日(WWW) HH時MM分SS秒 となり,1〜9 までは先頭に 0 が付く桁固定式です. ・conv_dnt make_date で生成した日付を管理者設定で指定したフォーマットにフ ォーマットし直します. 書式: $data = &conv_dnt(DATE); 日付を受け渡すには,DATE に make_date で生成された日付を格納し て渡します. 変換された日付は $date に格納されます. ----------------------- 例) 日付の書式を変更する. $now_daytime = &make_date; $format_daytime = &conv_dnt($now_daytime); print $format_daytime; ----------------------- ・get_rawip 串の後ろの IP アドレスを抜く. 書式: $rawip = &get_rawip($remote_addr); 掲示板にアクセスしたユーザーが串を使っている場合,その串がユー ザーの元の IP アドレスを保持している場合はそれを抜き出す. $rawip にはその抜き出した IP が格納される. $remote_addr には抜きたい IP アドレスを指定する. ・logfile_maintenance ログファイルの論理削除などを整理し,コンパクトにします. 書式: 1: @DATA_RANSOM = @DATA; 2: &logfile_maintenance; 3: @DATA = @DATA_RANSOM; ※行番号は便宜上のもの 1行目: 配列変数は引数として引き渡しが出来ないので,代用の配列 変数 @DATA_RANSIM に格納します. 2行目: ログファイルメンテナンスルーチンにジャンプします. ここでログのコンパクト処理が行われます. 現段階では論理削除されている記事の物理削除のみを実行し ています. 3行目: コンパクト化された記事データを元の配列変数に格納し直し ます. ジャンプ先のサブルーチンでは,配列変数の受け渡しは何も行われて いません. ジャンプする前に @DATA_RANSOM に配列変数型で書き込み内容を格納 させてください.