荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: icefire (懒懒的心懒懒的我), 信区: Program
标 题: [转载] [转寄] Perl CGI脚本系列(2)--搜索发送下载
发信站: BBS 荔园晨风站 (Sun Nov 22 19:16:28 1998), 站内信件
【 以下文字转载自 icefire 的信箱 】
【 原文由 icefire.bbs@melon.gznet.edu.cn 所发表 】
发信人: Anton (庭草无人随意绿), 信区: CGI
标 题: Perl CGI脚本系列(2)--搜索发送下载
发信站: 华南网木棉站 (Thu Nov 19 17:54:34 1998), 转信
CGI脚本部分:
#!/usr/local/bin/perl
###################################################################
#文件名:ssfile.pl ##功 能:
通过关键字搜索文件并将结果列表,同时可直接下载或者E-mail发送 ##作 者:gambler
(gambler@188.net) ##版本号:serach_send_file
v1.0
########################################################################
# 变量的定义
$mailprog = '/usr/bin/sendmail';
# sendmail 的绝对路径,可以使用 “which perl”指令获得
$url = 'http://www.sinoboy.com';
# 主页地址
$fromaddr = 'sinoboy@sinoboy.com';
# 管理员的E-mail地址
$organization = '网站名称';
# 网站的名称
$fromname = 'The name of Webmaster';
# 管理员姓名
$filebase = '/home1/sinoboy/www/down/soft';
# 存放供用户下载的软件目录
# 目前仅提供一个下载目录,在更新版本中将提供多个目录同时搜索的功能
# 注意:末尾不要加反斜杠!
$fileurl = 'http://www.sinoboy.com/down/soft/';
#存放供用户下载的软件的 url@referers = ("www.sinoboy.com");
# 该数组包括可以此CGI的主页地址
# 上述部分为变量定义部分,一般情况下只需改动此部分内容
##########################
# 子程序,检验主页地址是否可以使用此CGI
&check_url;
# 读取标准输入
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@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;
}
$string=$FORM{'terms'};
#获取外部参数
if ($ENV{'QUERY_STRING'} eq "getfile") {
&getfile;
}
# 子程序,获取日期
&get_date;
# 子程序,转换标准输入变量
&get_variables;
# 子程序,E-mail文件主题部分
&send_mail;
# 子程序,查询文件后的返回页面
&return_html;
exit;
sub check_url {
if ($ENV{'HTTP_REFERER'}) {
foreach $referer (@referers) {
if ($ENV{'HTTP_REFERER'} =~ /$referer/i) {
$check_referer = '1';
last;
}
}
}
else {
$check_referer = '1';
}
if ($check_referer != 1) {
&error('bad_referer');
}
}
sub get_date {
@days = ('星期日','星期一','星期二','星期三','星期四','星期五','星期六');
@months = ('1月','2月','3月','4月','5月','6月','7月',
'8月','9月','10月','11月','12月');
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
if ($hour < 10) { $hour = "0$hour"; }
if ($min < 10) { $min = "0$min"; }
if ($sec < 10) { $sec = "0$sec"; }
$date = "19$year年$months[$mon] $mday日,$days[$wday],$hour\:$min\:$sec";
}
sub get_variables {
if ($FORM{'realname'}) {
$realname = $FORM{'realname'};
}
if ($FORM{'email'} =~ /.*\@.*\..*/) {
$email = $FORM{'email'};
}
if ($FORM{'comments'}) {
$comments = $FORM{'comments'};
}
}
sub return_html {
if ($email eq "" || $files[0] eq "") {
print "Content-type: text/html\n\n";
print "<html><head><title>抱歉</title></head>\n";
print "<body bgcolor=ffffff><center><h1>很遗憾!</h1></center>\n";
print "抱歉, 你需要的文件没有找到,\n";
print "或者是你的电子信箱不合法,\n";
print "请按“back”键\n";
print "再试一次.</body></html>\n";
exit;
}
else {
print "Location: $url\n\n";
}
}
sub send_mail {
foreach $file (@files) {
if (-e "$filebase/$file") {
open(MAIL,"|$mailprog -t");
print MAIL "To: $email ($realname)\n";
print MAIL "From: $fromaddr ($fromname)\n";
if ($organization) {
print MAIL "$organization\n";
}
else {
print MAIL "传送文件\n";
}
print MAIL "Subject: $file\n";
print MAIL "X-Courtesy-Of: SSfile! V1.0\n\n";
open(INPUT,"$filebase/$file")||&error;
while (<INPUT>) {
chop $_;
print MAIL $_,"\n";
}
close (INPUT);
close (MAIL);
}
else {
print "Content-type: text/html\n\n";
print "<head><title>Sorry</title></head>\n";
print "<body bgcolor=ffffff><center><h1>Sorry</h1></center>\n";
print "抱歉,没有找到你需要的文件\n";
print "请你和管理员联系.<p>\n";
print "</body></html>\n";
open(REMAIL,"|$mailprog -t");
print REMAIL "To: $fromaddr\n";
print REMAIL "From: $email ($realname)\n";
if ($organization) {
print REMAIL "$organization\n";
}
else {
print REMAIL "发送文件失败\n";
}
print REMAIL "Subject: 文件不存在\n";
print REMAIL "X-Courtesy-Of: SSfile V1.0!\n\n";
print REMAIL "$email ($realname)\n";
print REMAIL "用户需要的文件是: @files\n";
print REMAIL "$comments\n";
close (REMAIL);
exit;
}
}
&mail_owner;
}
sub mail_owner {
if($files[0] ne "") {
open(REMAIL,"|$mailprog -t");
print REMAIL "To: $fromaddr\n";
print REMAIL "From: $email ($realname)\n";
if ($organization) {
print REMAIL "$organization\n";
}
else {
print REMAIL "文件发送失败\n";
}
if ($CONFIG{'subject'}) {
print REMAIL "Subject: $subject\n";
}
else {
print REMAIL "Subject: 文件: $files[0] 等.\n";
}
print REMAIL "X-Courtesy-Of: SSfile V1.0!\n\n";
print REMAIL "$email ($realname)\n";
print REMAIL " 用户需要下列文件:@files\n";
print REMAIL "$comments";
close (REMAIL);
}
}
sub getfile {
print "Content-type: text/html\n\n";
print "<html><head><title>查询结果</title></head>\n";
print "<body bgcolor=ffffff><center><h1>查询结果</h1></center>\n";
print "<form method=\"post\" action=\"$ENV{'SCRIPT_NAME'}\">\n";
print "<center><table border=1>\n";
print "<tr valign=top><Td>直接下载:</td><td>\n";
opendir(FILES,"$filebase");
@allfiles = sort(grep(!/^\.\.?$/,readdir(FILES)));
closedir(FILES);
foreach$file(@allfiles) {
if ($file=~/$string/){
print "<a href=\"$fileurl$file\">$file</a><br>\n";
}
}
print "</td></tr>\n";
print "<tr valign=top><Td>E-mail发送:</td><td>\n";
opendir(FILES,"$filebase");
@allfiles = sort(grep(!/^\.\.?$/,readdir(FILES)));
closedir(FILES);
foreach$file(@allfiles) {
if ($file=~/$string/){
print "<input type=checkbox name=\"filename\" value=\"$file\">$file\n";
}
}
print "</td></tr><tr valign=top><td>备忘录:</td><td>\n";
print "<textarea wrap name=\"comments\" rows=5 cols=36></textarea><br>\n";
print "</td></tr><tr><td>您的姓名:</td><td>\n";
print "<input type=text size=40 name=\"realname\">*<br>\n";
print "</td></tr><tr><td>您的E-mial:</td><td>\n";
print "<input type=text size=40 name=\"email\">*<br>\n";
print "</td></tr><tr><td></td><td>\n";
print "<input type=submit value=\"发送文件\">\n";
print "</td></tr></table></center></form>\n";
print "<center><a href=\"$url\">返回主页</a></center>\n";
print "</body></html>\n";
exit;
}
}
}
--------------------------------------------
| 在看得到的地方,我的眼睛和你在一块...... |
| 在看不到你的地方,我的心和你在一块...... |
--------------------------------------------
※ 来源:.华南网木棉站 bbs.gznet.edu.cn.[FROM: 202.116.174.100]
--
※ 转寄:.华南网木棉站 bbs.gznet.edu.cn.[FROM: linux.szu.edu.cn]
--
※ 转载:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.22]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店