📄 vote.pl
字号:
#!/usr/bin/perl
###############################################################################
# FoodShop.pl #
###############################################################################
# FoodShop Ver. 1.61 by LastSun (龙追日) #
# Scripts written by lastsun@netease.com #
# --------------------------------------------------------------------------- #
# PROGRAM NAME : FoodShop for UltraBoard v:1.61 #
# VERSION : 0.99 #
# LAST MODIFIED : 02/03/2000 #
# =========================================================================== #
# COPYRIGHT NOTICE : #
# #
# Copyright (c) 1999 龙追日. All Rights Reserved. #
###############################################################################
###############################################################################
# FoodShop #
###############################################################################
$VarsPath="../../Variables";
eval {
require "$VarsPath/AddFunction.cfg";
require "$VarsPath/System.cfg"
};
# 存放数据的目录,属性改为777
$data_path = "$Vote_DIRECTORY";
# 投票程序目录默认页面
$index_page = "$Vote_DIRECTORY/index.html";
# 是否允许来访客人加入自己的投票话题,1是允许,0是禁止。
$add_topic = 0;
# 最多可提供的选择项数,注意并不是必须每个都要填写的。
$ask_choice = 20;
# 输入你的投票主题
$title = "长乐帮帮主公开竞选投票站(仅限长乐帮帮众投票)!";
# 管理员密码
$password = "SunLast";
##############################################################################
# 必须的设定已经完成! #
##############################################################################
# Put the posted data into variables
$FORM{'uref'}="NULL";
# read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
$buffer = $ENV{'QUERY_STRING'};
}
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
# Check Cookies
$user_ref=$FORM{'uref'};
$Mark=0;
if (-e "$SessionPath/$user_ref"){
$Mark=1;
($UserName)=split(/\./,$user_ref);
open(MEMBER,"$MembersPath/$UserName.info");
my (@MemberData)=<MEMBER>;
close(MEMBER);
for (my ($i)=0;$i<=$#MemberData;$i++) {
chomp ($MemberData[$i]);
$MemberData[$i]=~s/\\n/\n/g;
}
@MemberData=&DecodeHTML(@MemberData);
$UserFaction = substr($MemberData[3],0,5);
}
if($Mark == 0){
print "Content-type: text/html\n\n";
print "<html><head>\n";
print "Ref Error<P>对不起,请先登陆笑傲江湖社区!\n";
print "<script Language=\"JavaScript\">\n";
print " alert(\"对不起,请先登陆笑傲江湖社区!\");\n";
print "</script></head></html>\n";
exit;
}
# Get the topics
open(DATA, "$data_path/vote.txt");
@data = <DATA>;
close(DATA);
# Decide what to do based on the $FORM{'action'} variable
print "Content-type: text/html\n\n";
print "<BODY bgcolor=\"#F5CA9E\">";
if ($FORM{'action'} eq "admin") { &admin; }
elsif ($FORM{'action'} eq "add_topic") { &add_topic; }
elsif ($FORM{'action'} eq "showvote") { &showvote; }
elsif ($FORM{'action'} eq "others") { &others; }
elsif ($FORM{'action'} eq "vote") { &vote; }
elsif ($FORM{'action'} eq "results") { &results; }
elsif ($FORM{'action'} eq "delete") { &delete; }
else {
print "<html><title>笑傲江湖虚拟社区投票站</title><center><b>$title</b></center><body>\n";
print "<link href=\"/cgi.css\" rel=\"STYLESHEET\" type=\"text/css\">";
print "<p><center>\n";
print "<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" width=\"500\" bordercolorlight=\"#BB6713\" bordercolordark=\"#FFF3E8\"><tr><td bgcolor=\"#CC9966\" height=\"25\">";
if ($#data > 0) { print "<center>请选择你想发表意见的话题</center></td></tr></table>"}
elsif ($#data == 0) { print "<center>请就下列话题,投出你神圣的一票:</center></td></tr></table>"}
else { print "不过,现在没有任何话题可供投票.\n"; }
if ($add_topic) {
if (@data) { print ", 或"; }
else { print "何不"; }
print "<a href=\"#add_topic\">加入一个你的话题</a>";
if (@data) { print ".\n<table width=\"600\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" bordercolorlight=\"#BB6713\" bordercolordark=\"#FFF3E8\"><tr><td><table cols=\"3\">"; }
else { print "?\n"; }
}
else { if (@data) { print "<table width=\"500\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" bordercolorlight=\"#BB6713\" bordercolordark=\"#FFF3E8\"><tr><td><table cols=\"3\">\n"; } }
foreach $line(@data) {
($topic, $num, $others, $faction) = split(/\|/, $line);
print "<tr><td width=\"280\">$topic</td>";
$i = 0;
open (FILE, "$data_path/ip$num.txt");
@ips = <FILE>;
close(FILE);
foreach $ip(@ips) {
chomp($ip);
if ($ip eq $ENV{'REMOTE_ADDR'}) { $i = 1; }
}
open (FILE, "$data_path/name$num.txt");
@names = <FILE>;
close(FILE);
foreach $name(@names) {
chomp($name);
if ($name eq $UserName) { $i = 1; }
}
if (($UserFaction ne $faction)&&($faction ne "")) {
print "<td width=\"100\"><p align=\"right\">你没有投票权</td>\n";
}
elsif ($i == 0) {
print "<form method=\"POST\">\n";
print "<input type=\"hidden\" name=\"action\" value=\"showvote\">\n";
print "<input type=\"hidden\" name=\"uref\" value=\"$user_ref\">\n";
print "<input type=\"hidden\" name=\"topic\" value=\"$num\"><td width=\"100\">\n";
print "<p align=\"right\"><input type=\"submit\" value=\"参与投票!\"></td></form>\n";
}
elsif ($i != 0) {
print "<td width=\"100\"><p align=\"right\">你已投了票</td>\n";
}
print "<form method=\"POST\">\n";
print "<input type=\"hidden\" name=\"action\" value=\"results\">\n";
print "<input type=\"hidden\" name=\"uref\" value=\"$user_ref\">\n";
print "<input type=\"hidden\" name=\"topic\" value=\"$num\">\n";
print "<td width=\"100\"><p align=\"right\"><input type=\"submit\" value=\"查看结果\"></td></form>\n";
print "</tr>\n";
}
if (@data) { print "</table></td></tr></table></center>\n"; }
if ($add_topic) { &addtopic; }
print "<form method=\"POST\">\n";
print "<table align=\"center\" width=\"500\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" bordercolorlight=\"#BB6713\" bordercolordark=\"#FFF3E8\"><tr><td width=\"100\" align=\"center\">管理密码:</td>\n";
print "<td width=\"200\" align=\"center\"><input type=\"password\" name=\"password\"></td>\n";
print "<input type=\"hidden\" name=\"action\" value=\"admin\">\n";
print "<input type=\"hidden\" name=\"uref\" value=\"$user_ref\">\n";
print "<td width=\"200\" align=\"center\"><input type=\"submit\" value=\"进入系统配置\"></form></center></td></tr></table>";
print "<table align=\"center\" width=\"500\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" bordercolorlight=\"#BB6713\" bordercolordark=\"#FFF3E8\"><td width=\"500\" align=\"right\">联系社区管理员:<a href=\"mailto:lastsun\@netease.com\">龙追日</a></table><p>";
print "<table align=\"center\" width=\"700\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" bordercolorlight=\"#BB6713\" bordercolordark=\"#FFF3E8\"><td width=\"700\" align=\"\">";
print "<p><font color=8080ff>投票说明:风之子申请的投票站,供各位长乐帮帮中同仁在提名的后选人中选择新帮主!";
print "<p><font color=#F5CA9E>—————</font>如果你还需要有什么投票的内容,请联系我!";
# print "<p><font color=#F5CA9E>—————</font>关心社区,建设社区!是你认为社区最需要加强的方面!";
# print "<p><font color=#F5CA9E>—————</font>集思广议话金钱则是田帮主头都快想破的金钱帮吸引玩家加入的广告词。(可追加)";
print "<center><p>关心社区,建设社区!</font></center></body></html></table>\n";
exit;
}
sub checkpassword {
if ($FORM{'password'} eq "") {
print "<link href=\"/cgi.css\" rel=\"STYLESHEET\" type=\"text/css\">";
print "<p><center>对不起,你必须输入正确的口令,才能来继续。</center>\n";
exit;
}
elsif ($FORM{'password'} ne $password) {
print "<link href=\"/cgi.css\" rel=\"STYLESHEET\" type=\"text/css\">";
print "<p><center>对不起,你输入的“ $FORM{'password'}”不正确!</center>\n";
exit;
}
}
sub addtopic {
print "<link href=\"/cgi.css\" rel=\"STYLESHEET\" type=\"text/css\">";
print "<center><a name=\"add_topic\"><h2>加入话题:</h2></center></a>\n";
print "<center><table width=\"500\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" bordercolorlight=\"#BB6713\" bordercolordark=\"#FFF3E8\"><tr><td>\n";
print "<form method=\"POST\"><input type=\"hidden\" name=\"action\"";
print " value=\"add_topic\"><table cols=\"2\"><tr>\n";
print "<input type=\"hidden\" name=\"uref\" value=\"$user_ref\">\n";
print "<td align=\"right\">请提出一个话题来让\n";
print "大家投票:</td><td><input type=\"text\"";
print " name=\"topic\"></td></tr>\n";
for ($i = 0; $i < $ask_choice; $i++) {
print "<tr><td align=\"right\">输入一个可能的\n";
print "选择, 或留空此项:</td><td>\n";
print "<input type=\"text\" name=\"$i\"></td></tr>\n";
}
print "<tr><td align=\"right\">允许他人提出自己的选择吗?</td><td>\n";
print "<input type=\"radio\" name=\"others\" value=\"yes\" CHECKED>是\n";
print "<input type=\"radio\" name=\"others\" value=\"no\">否</td></tr>\n";
print "<tr><td align=\"right\"><input type=\"submit\"></td>\n";
print "<td><input type=\"reset\"></td></tr><input type=\"hidden\"";
print " name=\"password\" value=\"$FORM{'password'}\"></form>\n";
print "</table></td></tr></table></center>\n";
}
sub add_topic {
unless ($add_topic) { &checkpassword; }
# Make sure a topic was given
unless ($FORM{'topic'}) {
print "<link href=\"/cgi.css\" rel=\"STYLESHEET\" type=\"text/css\">";
print "<html>好一个话题, 天才.\n";
print "<body>缺少话题请后退再试一\n";
print "遍.</body></html>\n";
exit;
}
# Make sure that at least one choice was given unless users are
# allowed to add choices
if ($FORM{'others'} eq "no") {
$j = 0;
for ($i = 0; $i < $ask_choice; $i++) { if ($FORM{$i}) { $j++; } }
if ($j == 0) {
print "<link href=\"/cgi.css\" rel=\"STYLESHEET\" type=\"text/css\">";
print "<html>至少要提出一个选择\n";
print "<body>请提出一个选择你需要提供\n";
print "一个选择 或 允许他人提出自己的选择. 请后退\n";
print "再试一遍.\n";
exit;
}
}
# Add the topic to the main data
($i, $lastnum, $j) = split(/\|/, $data[$#data]);
$lastnum++;
open (FILE,">>$data_path/vote.txt");
print FILE "$FORM{'topic'}|$lastnum|$FORM{'others'}\n";
close(FILE);
$FORM{'topic'} = $lastnum;
open (FILE,">$data_path/ch$lastnum.txt");
$num = 0;
for ($i = 0; $i < $ask_choice; $i++) {
if ($FORM{$i}) {
print FILE "$FORM{$i}|0|$num\n";
$num++;
}
}
close(FILE);
print "<link href=\"/cgi.css\" rel=\"STYLESHEET\" type=\"text/css\">";
print "<body>话题成功加入请按 后退 再 刷新 一遍就可看到.\n";
}
sub admin {
&checkpassword;
print "<link href=\"/cgi.css\" rel=\"STYLESHEET\" type=\"text/css\">";
print "<a href=\"$index_page\">返回投票页面</a> | \n";
print "<html>管理页面<body>\n";
# If there are any topics, print them out for deletion and allow you
# to add and remove user's ability to add choices.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -