|
| #!/usr/local/bin/perl
#┌─────────────────────────────────
#│ Message Enquete v1.7 (2002/09/09)
#│ Copyright(C) Kent Web 2002
#│ webmaster@kent-web.com
#│ http://www.kent-web.com/
#└─────────────────────────────────
$ver = 'Message Enquete v1.7';
#┌─────────────────────────────────
#│ [ 注意事項 ]
#│ 1. このスクリプトはフリーソフトです。このスクリプトを使用した
#│ いかなる損害に対して作者は一切の責任を負いません。
#│ 2. 設置に関する質問はサポートコーナにお願いいたします。直接
#│ メールによる質問は受け付けておりません。
#└─────────────────────────────────
#
# [ 設置例 ]
#
# public_html / index.html (トップページなど)
# |
# +-- msgenq / msgenq.cgi [755]
# | msgenq.log [666]
# | msgenq.dat [666]
# | jcode.pl [644]
# | graph.gif
# |
# +-- lock [777] /
#
#
# [ チェックモードの仕方 ] : mode=check という引数を付けて呼出す
#
# 例 http://〜〜/msgenq.cgi?mode=check
#============#
# 設定 #
#============#
# jcode.pl取り込み
require './jcode.pl';
# タイトル名
$title = "アンケート投票第一弾";
# タイトル文字の色
$t_color = "#008080";
# タイトル文字の大きさ (スタイルシートで反映)
$t_size = '24px';
# 本文の文字大きさ (スタイルシートで反映)
$b_size = '13px';
# 本文の文字タイプ (スタイルシートで反映)
$f_family = "MS UI Gothic";
# スクリプト名
$script = './msgenq.cgi';
# ログファイル
$logfile = './msgenq.log';
# メッセージログファイル
$msgfile = './msgenq.dat';
# 投稿メッセージファイル最大保持数
$max = 100;
# 初期画面で表示する上位項目数
# → 0 にすると最初から全項目を表示します
$topview = 10;
# 1ページ当りの記事表示数
$pageview = 20;
# 投稿メッセージの文字数制限(全角換算で指定)
$msg_max = 100;
# 投稿メッセージの改行は有効にする (0=no 1=yes)
$msg_br = 1;
# 管理用パスワード
$pass = 'george';
# ユーザ項目追加機能 (0=no 1=yes)
# → yes だとユーザが自由に項目を追加することが可能となります
$FreeItem = 1;
# IPアドレスの保持件数(二重投稿禁止)
# → これを 0 にすると二重投稿のチェックを行ないません
$ipmax = 5;
# グラフ画像 (絶対パスだと http://から)
$graph = "./graph.gif";
# 戻り先 (絶対パスだと http://から)
$home = "http://www.dcseikatsu.com/";
# bodyタグ
$body = '';
# 記事の更新は「method=POST」限定 (セキュリティ強化)
# 0 : 行なわない
# 1 : 行なう
$postonly = 1;
# ロックファイル機構
# 0 : 行なわない
# 1 : 行なう(symlink関数)
# 2 : 行なう(mkdir関数)
$lockkey = 0;
# ロックファイル名
$lockfile = './lock/msgenq.lock';
# サブタイトル
# --> タイトル下にサブタイトルを記述します(タグ使用可)
$subtitle = <<'EOM';
- あなたがアメリカに来た理由は何ですか?
- コメントがありましたらいっしょにお聞かせください。
EOM
# タイトル画像を使う場合 (http://から画像を指定)
$ImgT = "";
# タイトル画像を使う場合に「横幅」「縦幅」をそれぞれピクセル数で記述
$ImgW = 300;
$ImgH = 70;
# タグ広告挿入オプション
# → の代わりに「広告タグ」を挿入する。
# → 広告タグ以外に、MIDIタグ や LimeCounter等のタグにも使用可能。
$banner1 = ''; # 上部に挿入
$banner2 = ''; # 下部に挿入
# アクセス制限(半角スペースで区切る)
# → 拒否するホスト名又はIPアドレスを記述(アスタリスク可)
# → 記述例 $deny = '*.anonymizer.com *.denyhost.xx.jp 211.154.120.*';
$deny = '';
#============#
# 設定完了 #
#============#
# メイン処理
&decode;
&axs_check;
if ($mode eq 'regist') { ®ist; }
elsif ($mode eq 'admin') { &admin; }
elsif ($mode eq 'MakeItem' && $FreeItem) { &MakeItem('USER'); }
elsif ($mode eq 'check') { ✓ }
&html;
#----------------#
# アクセス制限 #
#----------------#
sub axs_check {
# ホスト名を取得
&get_host;
local($flag)=0;
foreach (split(/\s+/, $deny)) {
next if (!$_);
s/\*/\.\*/g;
if ($host =~ /$_/i) { $flag=1; last; }
}
&error("アクセスを許可されていません") if ($flag);
}
#------------------#
# 初期画面を表示 #
#------------------#
sub html {
&header;
print "[トップに戻る]\n";
print "\n";
print "$banner1 \n" if ($banner1 ne "");
# タイトル
if ($ImgT) {
print " \n";
} else {
print "
\n";
print " $title\n";
print "
\n";
}
print " \n";
$total=0;
open(IN,"$logfile") || &error("Open Error : $logfile");
$top = ;
while () {
($no,$item,$count) = split(/<>/);
$num{$no} = $no;
$itm{$no} = $item;
$cnt{$no} = $count;
$total += $count;
}
close(IN);
$all = &filler($total);
print "\n";
# 項目追加
if ($FreeItem) {
print " \n";
print " \n";
}
# ページ区切り処理
$start = $page + 1;
$end = $page + $pageview;
# コメントを表示
print " \n - ▼ コメント一覧\n";
$i=0;
open(IN,"$msgfile") || &error("Open Error : $msgfile");
while () {
$i++;
if ($i < $start) { next; }
if ($i > $end) { last; }
($date,$item,$comment) = split(/<>/);
print "
$item - $date\n";
print "- $comment\n";
}
close(IN);
print "
\n";
# ページ繰りボタン
$next = $page + $pageview;
$back = $page - $pageview;
print "
|