📄 mnews.pl
字号:
#!/usr/local/bin/perl
#=====================================================================
#版权声明 (Male Nurse News v1.0)
#
#本软体为男丁格尔(nursing@tacocity.com.tw)所撰写
#特作此版权说明,请大家遵守
#
#本软体为共享软体(shareware)提供所有网站免费使用
#请勿非法转载, 散播, 或用于其他图利行为, 并请勿删除版权声明
#
#男丁格尔(nursing@tacocity.com.tw)
#
#本软体中,引用了 Very Thanks Soho 取参数传递资料的写法。
##########################################################################
#### 读入设定资料档####
$setup_path="/home/city1/个人帐号名称/www/cgi-bin/mnews_setup.pl"; #设定资料档的绝对路径
require $setup_path;
########################
#$|=1;
&get_form;
&set_var;
if ($job eq "") {
&view_1 if ($view_show == 1);
&view_2 if ($view_show == 2);
&view_3 if ($view_show == 3);
exit 0;
}
print "Content-type: text/html\n\n";
if ($job eq "manage") {
&manage;
exit 0;
}
elsif ($job eq "password_check") {
&password_check;
exit 0;
}
elsif ($job eq "add") {
&add;
exit 0;
}
elsif ($job eq "views") {
&views;
exit 0;
}
elsif ($job eq "manage_del") {
&manage_del;
exit 0;
}
elsif ($job eq "manage_change") {
&manage_change;
exit 0;
}
elsif ($job eq "add_change") {
&add_change;
exit 0;
}
#############标准程序############################################
sub get_form {
@querys = split(/&/, $ENV{'QUERY_STRING'});
foreach (@querys) {
($name,$value) = split(/=/, $_);
$value = &decode($value);
$value = &filterhtml($value);
&setvaluetoform($name, $value);
}
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach (@pairs) {
($name, $value) = split(/=/, $_);
$value = &decode($value);
$value = &filterhtml($value);
&setvaluetoform($name, $value);
}
}
#==============================================
sub decode {
local($return)=$_[0];
$return =~ tr/+/ /;
$return =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
return $return;
}
#==============================================
sub filterhtml {
local($return)=$_[0];
$return =~ s/<!--(.|\n)*-->//g;
if ($show_html != 1) {
$return =~ s/<([^>]|\n)*>//g;
$return =~ s/<//g;
}
$return =~ s/script|meta//gi;
return $return;
}
#==============================================
sub setvaluetoform {
if ($FORM{$_[0]}) {
$FORM{$_[0]}="$FORM{$_[0]}§$_[1]";
}
else {
$FORM{$_[0]}=$_[1];
}
}
#==============================================
sub set_var {
$job =&get_var('job' ,'\n|∥');
$title =&get_var('title' ,'\n|∥');
$comments =&get_var('comments' ,'\n|∥');
$num =&get_var('num' ,'\n|∥');
$chdaten =&get_var('chdaten' ,'\n|∥');
$chtimen =&get_var('chtimen' ,'\n|∥');
$ck =&get_var('ck' ,'\n|∥');
$news_set =&get_var('news_set' ,'\n|∥');
$chk_name =&get_var('chk_name' ,'\n|∥');
$chk_pass =&get_var('chk_pass' ,'\n|∥');
$see =&get_var('see' ,'\n|∥');
$nk =&get_var('nk' ,'\n|∥');
$nk2 =&get_var('nk2' ,'\n|∥');
$img_url =&get_var('img_url' ,'\n|∥');
$next_url =&get_var('next_url' ,'\n|∥');
($secn,$minn,$hourn,$dayn,$monn,$yearn,$weekn,$yeardayn,$isdst) = localtime(time+(3600*$time_miss));
$monn=$monn+1;
if ($monn<10) {$monn="0$monn";}
if ($dayn<10) {$dayn="0$dayn";}
if ($hourn<10) {$hourn="0$hourn";}
if ($minn<10) {$minn="0$minn";}
if ($secn<10) {$secn="0$secn";}
$yearn=$yearn+1900;
$daten="$yearn/$monn/$dayn";
$timen="$hourn\:$minn\:$secn";
$newuserno="$yearn$monn$dayn$hourn$minn$secn";
}
#==============================================
sub get_var {
local($return)="";
$return="$FORM{$_[0]}" if ($FORM{$_[0]});
$return=~ s/$_[1]//g;
return $return;
}
#==============================================
sub readtxtfile {
open(READTXTFILE,"$_[0]");
flock(READTXTFILE,2);
@readtxtfile=<READTXTFILE>;
flock(READTXTFILE,8);
close(READTXTFILE);
return @readtxtfile;
}
#==============================================
sub HTMLHeader {
print "<HTML>\n";
print "<HEAD><TITLE>$_[0]</TITLE>\n";
print "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=BIG5\">\n";
&style if ($_[1] == 1);
print "</HEAD>\n";
print "<BODY>\n";
}
#==============================================
sub HTMLFooter {
print "<br><P><CENTER><!--\#echo banner=\"\"--></CENTER>\n";
print "</BODY>\n";
print "</HTML>\n";
}
#==============================================
sub style {
print "<STYLE TYPE=\"text/css\">\n";
print "<!--\n";
print "A:link {color: rgb(0,0,255); font-style: normal; text-decoration: none; cursor: hand}\n";
print "A:visited {color:rgb(255,0,0); font-style: normal; text-decoration: none}\n";
print "A:active {color:rgb(255,0,0); font-style: normal; text-decoration: none}\n";
print "body,th,td,input,select,textarea {font:9pt 新细明体}\n";
print "a:hover {color:rgb(255,0,0);text-decoration:none}\n";
print "a {text-decoration:none; color:#000000}\n";
print "-->\n";
print "</STYLE>\n";
}
#==============================================
sub succ {
&HTMLHeader($_[0],1);
print "<CENTER><TABLE width=60%>\n";
print "<TR><TD align=\"center\">$_[0]<hr></TD></TR>\n";
print "<TR bgcolor=$view1_color><TD align=\"center\">【<a href=$news_html>回首页</a>】</TD></TR>\n" if ($_[1] ne "1");
print "<TR bgcolor=$view1_color><TD align=\"center\">【<a href='javascript:history.go(-1);'>回上一页</a>】</TD></TR>\n" if ($_[1] eq "1");
print "</TABLE></CENTER>\n";
&HTMLFooter;
}
################标准程序结束###############
####管理介面###############################
sub manage {
&HTMLHeader("管理介面",1);
print "<FORM METHOD=\"Post\" ACTION=\"$cgiurl?job=password_check\">\n";
print "<CENTER><TABLE Border=1>\n";
print "<TR><TD colspan=2>\n";
print "<INPUT TYPE=Radio NAME=\"news_set\" VALUE=\"ch_1\">新增新闻</TD></TR>\n";
print "<TR><TD colspan=2>\n";
print "<INPUT TYPE=Radio NAME=\"news_set\" VALUE=\"ch_2\">修改与删除</TD></TR>\n";
print "<TR><TD><FONT COLOR=\"#000000\">管理员名称:</TD><TD><INPUT TYPE=Text NAME=\"chk_name\" SIZE=10 MAXLENGTH=8></TD></TR>\n";
print "<TR><TD><FONT COLOR=\"#000000\">管理员密码:</TD><TD><INPUT TYPE=Password NAME=\"chk_pass\" SIZE=10 MAXLENGTH=8></TD></TR>\n";
print "<TR><TD colspan=2 align=center>\n";
print "<INPUT TYPE=Submit VALUE=\"送出\">\n";
print "<INPUT TYPE=Reset VALUE=\"取消\">\n";
print "</TD></TR>\n";
print "</TABLE></FORM></CENTER>\n";
&HTMLFooter;
}
####密码确认###############################
sub password_check {
&succ("姓名或密码错误!",1) if (($chk_name eq "") or ($chk_pass eq ""));
if (($chk_name ne "") or ($chk_pass ne "")) {
if ($manage{$chk_name} eq $chk_pass) {
if ($news_set eq "ch_1") {
&add_news;
exit 0;
} elsif ($news_set eq "ch_2") {
&change_and_delete;
exit 0;
}
} elsif ($manage{$chk_name} ne $chk_pass) {
&succ("姓名或密码错误!",1);
}}
}
####增加新闻介面###############################
sub add_news {
&HTMLHeader("增加新闻",1);
print "<form method=\"post\" action=\"$cgiurl?job=add\">\n";
print "<center><table border=0>\n";
print "<tr><td align=center bgcolor=\"\#66ccff\">标题</td></tr>\n";
print "<tr><td align=center><input type=text name=\"title\" size=30></td></tr>\n";
print "<tr><td align=center bgcolor=\"\#66ccff\">内容</td></tr>\n";
print "<tr><td align=center><TextArea NAME=\"comments\" ROWS=5 COLS=40></TextArea></td></tr>\n";
print "<tr><td align=center bgcolor=\"\#66ccff\">图片网址</td></tr>\n";
print "<tr><td align=center><input type=text name=\"img_url\" size=30 value=\"[none]\"></td></tr>\n";
print "<tr><td align=center bgcolor=\"\#66ccff\">跳页位置</td></tr>\n";
print "<tr><td align=center><input type=text name=\"next_url\" size=30 value=\"[none]\"></td></tr>\n";
print "<tr><td colspan=2 align=center>\n";
print "<INPUT type=\"submit\" value=\"送出\"><INPUT type=\"reset\" value=\"清除\">\n";
print "</td></tr></table></form>\n";
&HTMLFooter;
}
####增加新闻主程式###############################
sub add {
$click=0;
dbmopen(%USERFILE,"$filehead$news_data",0666);
$USERFILE{$newuserno}="yuko∥$daten∥$timen∥$title∥$comments∥$click∥$img_url∥$next_url∥\n";
dbmclose(%USERFILE);
#=====删除多出的新闻==========
dbmopen(%TEMP,"$filehead$news_data",0666);
%USERFILE=%TEMP;
dbmclose(%TEMP);
@userno=keys %USERFILE;
@userno=sort {$b<=>$a} @userno;
$usertotal=$#userno;
if ($usertotal >= $set_num) {
dbmopen(%USERFILE,"$filehead$news_data",0666);
for ($i=$usertotal;$i>=$set_num;$i=$i-1) {
$over=$userno[$i];
delete $USERFILE{$over};
}
dbmclose(%USERFILE);
}
#=============================
&succ("加入完成!",0);
}
#######显示新闻######################################
sub view_1 {
#print "Content-type: text/html\n\n";
dbmopen(%TEMP,"$filehead$news_data",0666);
%USERFILE=%TEMP;
dbmclose(%TEMP);
@userno=keys %USERFILE;
@userno=sort {$b<=>$a} @userno;
$usertotal=$#userno+1;
if (defined @userno) {
$vb=0;
}else {
$vb=1;
}
$count=0;
print "<CENTER><TABLE Border=\"0\" CELLSPACING=\"0\" CELLPADDING=\"2\" width=100%>\n";
print "<TR><TD bgcolor=$view1_color colspan=3 align=center>目前没有任何资料存在</TD></TR>\n" if ($vb != 0);
foreach $userno1 (@userno) {
@co=split(/∥/,$USERFILE{$userno1});
$count++;
$co[4] =~ s/<([^>]|\n)*>//g;
$co[4] =~ s/<//g;
$co[4] =~ s/script|meta//gi;
if (length($co[4]) > $text_length ) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -