|
作者: Aoming [aoming] 版主 | 登录 |
引用: ============================== 你好!首先想说的是我不是一个程序员,所以提供的程序设计会存在很多不爽。欢迎对设计提出质疑并进一步讨论。 一个比较简单的思路: 静态页面分区域,比如分头部title,底部bottom,中间主题部分用表格分开,每一个单元格中放置不同的脚本,脚本可由asp代码或者javascript、perl、php等完成。脚本的作用是调用后台CGI程序部分已经处理好的输出结果,这部分输出结果可以用文本数据的形式保存,也可以写入数据库文件。 举个例子来说MY动力文章系统(免费版),它是将处理的结果保存到ACCESS的数据库文件中,然后在首页通过<% call function %>这样的形式激活另一个asp文件读取数据库。 接着说后台CGI部分设计,这部分当然会比较复杂,但简化程序功能,我用Perl做脚本语言,结合javascript举一个只需要2个管理员,分管2个单元格(一个负责更新网页通知,一个负责更新网页问候语) =========== 流程图: =========== 打开 静态网页───提交管理员验证给CGI后台 │ │ │ │ │ 管理员验证 │ │ ┌──┴────────┬──────────┐ ┇ A管理员通过 B管理员通过 未通过──── …… ┇ │ │ 转到发通知部分 转到更新欢迎辞部分 │ │ │ 打开Note文本 打开Hello文本 │ 写入新内容 写入新内容 │ │ │ │ ├────────────┤ └───── 脚本调用 │ ├────────────│ │ │ 显示Note 显示Hello 以下是一段例子,比较龌龊的代码,希望各位看了不要反胃,我不是程序员,见谅。 ================================== 静态页面部分 Try.htm ================================== <html> <!-- .....头部略 --> <body> <!-- 显示通知 --> <table> <tr><td><script language="JavaScript" src="/cgi-bin/script/Note.pl"></script></td></tr><!-- 显示通知 --> <tr><td><script language="JavaScript" src="/cgi-bin/script/Hello.pl"></script></td></tr> <!-- 显示欢迎语句 --> </table> <!-- 2个管理员登陆 --> <form action="/cgi-bin/script/process.pl" method="post" name="guanli" target="_logon" id="guanli"> <p><font size="2" face="Verdana, Arial, Helvetica"><br> 管理员姓名 <input name="name" type="text" id="name" size="10" maxlength="20"><br> 管理员密码 <input name="pass" type="password" id="pass3" size="10" maxlength="20"> <br><br> <input name="submit" type=submit value="提交"> <input name="reset" type="reset" value="重填"> </p> </form> ======================================== =================================== 后台主CGI程序process.pl =================================== #!/usr/bin/perl print "content-type:text/html\n\n"; if ($ENV{'REQUEST_METHOD'} eq "POST"){ read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); } elsif ($ENV{'REQUEST_METHOD'} eq "GET"){ $buffer=$ENV{'QUERY_STRING'}; } else{ exit; } #################################################### ## CGI解码,读取用户数据,未对非法字符过滤 ## #################################################### @pairs=split(/&/,$buffer); foreach $pair(@pairs){ ($name,$value)=split(/=/,$pair); $name=~tr/+/ /; $name=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value=~tr/+/ /; $value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $form{$name}=$value; } ############################### ## 用户身份认证 ## ############################### # ######### 明星会员管理认证 ######## $user_mxhy="猫子"; $pass_mxhy="010203"; $user_xxmx="小辑"; $pass_xxmx="897011"; if(($form{'name'} eq $user_mxhy) && ($form{'pass'} eq $pass_mxhy)) { if($form{'edit'} eq "done"){ & mxhy_edit; # 打开date_cssy_guanli文本写入新数据 print "修改成功"; exit; } & mxhy; # 明星会员管理,包括非法字符过滤 } elsif(($form{'name'} eq $user_xxmx) && ($form{'pass'} eq $pass_xxmx)){ if($form{'edit'} eq "done"){ & xxmx_edit; # 打开date_cssy_guanli文本写入新数据 print "修改成功"; exit; } & xxmx; # 明星会员管理,包括非法字符过滤 exit; } else{ print "sorry,口令或用户名错误,你没有管理权限"; exit; } ################################################ ############################### ## 子程序部分 ## ############################### sub mxhy #明星会员管理部分,包括非法字符过滤 { open(SCHOOLSTAR,"./date_cssy_guanli/mxhy.txt"); $line=<SCHOOLSTAR>; @pix=split(/ /,$line); close(SCHOOLSTAR); $mxhy_text=$pix[3]; $mxhy_text=~s/<br>/\n/g; $zxdt_text=$pix[4]; $zxdt_text=~s/<br>/\n/g; # 文本中格式为“图片URL 宽度 高度 明星会员介绍 社团最新动态” # 所以$pix[0]为图片URL,$pix[1]为宽度、$pix[2]为高度 # 当前明星会员的介绍文本用变量$mxhy_text表示,社团最新动态用$zxdt_text表示 print<<MXHY; <html><head><title>首页明星会员发布管理</title></head> <body><h3 align=center>首页明星会员发布管理</h3><hr width=80%> <table width=80% align=center> <tr><td><font color=red>NOTE:鉴于社区网页结构,图片的宽度最好不要超过145pix</font><br></td></tr> <tr> <td> <form action="process.cgi" method=POST> <p>当前首页明星会员照片: <script language=javascript> document.write('<img src=$pix[0] width=$pix[1] height=$pix[2] align=left>'); </script></p> <p><input type=hidden name=name value=$user_mxhy></p> <p><input type=hidden name=pass value=$pass_mxhy></p> <p><input type=hidden name=edit value=done></p> <p>图片的地址:<input type=text name=mxhy_pix_url value=$pix[0] size=40></p> <p>图片的宽度:<input type=text name=mxhy_pix_width value=$pix[1] size=4>pix 高度:<input type=text name=mxhy_pix_height value=$pix[2] size=4>pix</p> <h width=70% align=center> <p>当前首页明星会员介绍: </p> <p><textarea name="mxhy_info" cols="80" rows="10" wrap="VIRTUAL">$mxhy_text</textarea></p> <p>社团最新动态: </p> <p><textarea name="zxdt_info" cols="80" rows="10" wrap="VIRTUAL">$zxdt_text</textarea></p> <p align=right><input type=submit name="Submit"> <input type=reset name="reset"></p> </td> </tr> </table> MXHY } ############################### sub mxhy_edit #打开date_cssy_guanli文本写入新数据部分 { $form{'mxhy_pix_url'}=~s/ //g; if($form{'mxhy_pix_width'}=~/\D/){ print "$form{'mxhy_pix_width'}\n"; print "图片宽度设置有误,请检查"; exit; } if($form{'mxhy_pix_height'}=~/\D/){ print "$form{'mxhy_pix_height'}\n"; print "图片高度设置有误,请检查"; exit; } $form{'mxhy_info'}=~s/\cM\n/<br>/g; $form{'mxhy_info'}=~s/ / /g; $form{'mxhy_info'}=~s/</</g; $form{'mxhy_info'}=~s/>/>/g; $form{'mxhy_info'}=~s/<br>/<br>/g; $form{'zxdt_info'}=~s/\cM\n/<br>/g; $form{'zxdt_info'}=~s/ / /g; $form{'zxdt_info'}=~s/</</g; $form{'zxdt_info'}=~s/>/>/g; $form{'zxdt_info'}=~s/<br>/<br>/g; $space=" "; $line=$form{'mxhy_pix_url'}.$space.$form{'mxhy_pix_width'}.$space.$form{'mxhy_pix_height'}.$space.$form{'mxhy_info'}.$space.$form{'zxdt_info'}; open(MXHY_INFO,">./date_cssy_guanli/mxhy.txt"); print MXHY_INFO "$line"; close(MXHY_INFO); } ############################### sub xxmx #学习明星管理部分,包括非法字符过滤 { open(SCHOOLSTAR,"./date_cssy_guanli/xxmx.txt"); $line=<SCHOOLSTAR>; @pix=split(/ /,$line); close(SCHOOLSTAR); # 文本中格式为“图片URL 宽度 高度 明星会员介绍 社团最新动态” # 所以$pix[0]为图片URL,$pix[1]为宽度、$pix[2]为高度 print<<XXMX; <html><head><title>学习明星发布管理</title></head> <body><h3 align=center>学习明星发布管理</h3><hr width=80%> <table width=80% align=center> <tr><td><font color=red>NOTE:鉴于社区网页结构,图片的宽度最好不要超过165pix</font><br></td></tr> <tr> <td> <form action="process.cgi" method=POST> <p>当前学习明星照片: <script language=javascript> document.write('<img src=$pix[0] width=$pix[1] height=$pix[2] align=left>'); </script></p> <p><input type=hidden name=name value=$user_xxmx></p> <p><input type=hidden name=pass value=$pass_xxmx></p> <p><input type=hidden name=edit value=done></p> <p>图片的地址:<input type=text name=xxmx_pix_url value=$pix[0] size=40></p> <p>图片的宽度:<input type=text name=xxmx_pix_width value=$pix[1] size=4>pix 高度:<input type=text name=xxmx_pix_height value=$pix[2] size=4>pix</p> <h width=70% align=center> <p align=right><input type=submit name="Submit"> <input type=reset name="reset"></p> </td> </tr> </table> XXMX } ############################### sub xxmx_edit #打开date_cssy_guanli文本写入新数据部分 { $form{'xxmx_pix_url'}=~s/ //g; if($form{'xxmx_pix_width'}=~/\D/){ print "$form{'xxmx_pix_width'}\n"; print "图片宽度设置有误,请检查"; exit; } if($form{'xxmx_pix_height'}=~/\D/){ print "$form{'xxmx_pix_height'}\n"; print "图片高度设置有误,请检查"; exit; } $space=" "; $line=$form{'xxmx_pix_url'}.$space.$form{'xxmx_pix_width'}.$space.$form{'xxmx_pix_height'}; open(MXHY_INFO,">./date_cssy_guanli/xxmx.txt"); print MXHY_INFO "$line"; close(MXHY_INFO); } ############################### #程序末尾部分 exit; =================================== 脚本 mxhy_info.pl =================================== #!/usr/bin/perl print "content-type:text/html\n\n"; open(SCHOOLSTAR,"../date_cssy_guanli/mxhy.txt"); $line=<SCHOOLSTAR>; @pix=split(/ /,$line); close(SCHOOLSTAR); print "document.write('$pix[3]')"; exit; =================================== 脚本 mxhy_pix.pl =================================== #!/usr/bin/perl print "content-type:text/html\n\n"; open(SCHOOLSTAR,"../date_cssy_guanli/mxhy.txt"); $line=<SCHOOLSTAR>; @pix=split(/ /,$line); close(SCHOOLSTAR); print "document.write('<a href=$pix[0] target=blank><img src=$pix[0] width=$pix[1] height=$pix[2] alt=点击浏览></a>')"; exit; ………………………… 类似的还有两个脚本就不列举出来了。 |
地主 发表时间: 04-04-20 00:40 |
回复: darkslayer [xysj1111] 论坛用户 | 登录 |
多谢了 |
B1层 发表时间: 04-04-22 09:01 |
回复: zmdxl [zmdxl] 论坛用户 | 登录 |
其实Aoming [aoming]还是很用心的 可能说话、做事有点个性 大家多谅解他 一起学习 |
B2层 发表时间: 04-04-24 12:54 |
回复: q70213526 [q70213526] 版主 | 登录 |
已收藏。 谢谢 |
B3层 发表时间: 04-04-24 18:53 |
回复: RunwinY [runwin] 论坛用户 | 登录 |
不用心还会写这么多吗?我就不会啦。。。呵 |
B4层 发表时间: 04-04-24 21:44 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号