登录模块加载中...
会员投稿 投稿指南 今天是:
打印本页 | 关闭窗口 | 双击滚屏 您的位置首页>>网页制作学习园地>>CGI教程>>CGI脚本编码>>Guest book
Guest book
来源:网页制作学习园地 ‖ 作者:网页制作学习园地 ‖ 点击: ‖ 时间:07-12-19 14:55:12 ‖ 【 】‖ 我要投稿

Guest-book在网页设计中占有相当重要的地位,以至于可以和记数器相提并论。留言本可以用许多编程语言来设计,当然使用最多的还是perl和vb两种。本次cgi教程我们将谈谈在编写Guest-book中最应该注意的问题,并将给出一个不算很完整的程序代码。
就现在的情况来看,一个标准的guest-book程序一般包括三个文件。提交表单文件
(form.html)、cgi处理文件(guest-book.cgi)和最后的输出文件(book.html)。有些vb程序以access数据库为后台存储格式,以方便用户查找留言。下图给出了guest-book的工作流程。

form.html
首先我们来看看form.html的文件内容:
< html >
< title >guest-book.html< /title >
< h1 >留言本< /h1 >
< form method="post" action="/cgi-shl/guest-book.cgi" >
< p >名字:< input name="name" size="20" >
< p >email:< input name="email" size="30" >
< p >意见:< textarea name="suggest" cols=30 rows=4 >< /textarea >
< /textarea >< p >
< input type="submit" value="提交" >
< input type="reset" value="取消" >
< /form >< /html >

< form method="post" action="/cgi-shl/guest-book.cgi" >
将此表单的提交后的动作交给guest-book.cgi程序。

guest-book.cgi
#! perl

print"Content-type:text/html\n\n";
read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
@pairs=split(/&/,$buffer);
foreach $pair(@pairs){
($name,$value)=split(/=/,$pair);
$value=~tr/+//;
$value=~s/%([a-f A-F 0-9][a-f A-F 0-9])/pack("C",hex($1))/eg;
$FORM{$name}=$value;
}
print"< title >留言本< /title >";
print"< h1 >留言本< /h1 >";

foreach $check(values%FORM){
if($check eq""){
print"< hr size=3 >";
print"< h2 >请不要留空";
exit(0);
}
}

$FORM{'suggest'}=~s/cM\n/< br >\n/g;

$filename="c:/website/htdocs/book.html";

open(FILE," > > $filename");
print FILE "名字:$FORM{'name'}< br >\n";
print FILE "Email:< a href="mailto:$FORM{'email'} >$FORM{'email'}< /a >< br >\n"}";
print FILE "留言:$FORM{'suggest'}";
close{FILE};
print "< h2 >谢谢留言< /h2 >";
print"< a href=\"book.html\" >请观看留言本< /a >";
exit(0);

这个程序相当简陋,但它具有了所有的CGI-Guest程序的特点,我们一一分析如下:
首先,
read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
@pairs=split(/&/,$buffer);
foreach $pair(@pairs){
($name,$value)=split(/=/,$pair);
$value=~tr/+//;
$value=~s/%([a-f A-F 0-9][a-f A-F 0-9])/pack("C",hex($1))/eg;
$FORM{$name}=$value;
}
这是一段表单分析的语句,在前面的程序里,估计大家也都见过了。

其次:
foreach $check(values%FORM){
if($check eq""){
print"< hr size=3 >";
print"< h2 >请不要留空";
exit(0);
}
}
做输入字段的检查,看看是否有留空的现象。从前这种任务都是要CGI程序来验证的,比如email是否输入的是mail地址等检查。不过现在我们可以通过javascript来做这样的检查,这样服务器的负担将大大减轻。

最后:
$filename="c:/website/htdocs/book.html";

open(FILE," > > $filename");
print FILE "名字:$FORM{'name'}< br >\n";
print FILE "Email:< a href="mailto:$FORM{'email'} >$FORM{'email'}< /a >< br >\n"}";
pri

|<< << < 1 2 > >> >>|
加入收藏:  加入收藏夹  | 发送给好友:  发送给好友
责任编辑:admin
请文明参与讨论,禁止漫骂攻击。  
网友评论