论坛: 编程破解 标题: 《一段失败的代码》 复制本贴地址    
作者: NetDemon [netdemon]    ADMIN   登录
以下代码为本论坛右下边的帖子导航,我历时6.5小时完成。
显示帖子标题的程序display.pl包括了加密论坛的身份认证原来只有207行,
但为了能够实现帖子的导航,却需要增加这下面114行,我思前想后觉得我的算法有问题,
应该有一种更加简单的判断方式。希望谁可以给点意见或建议。
代码中,$lastpage 为板块页面帖子总数,$page为当前浏览页面
代码:

    print "<table border=\"0\" width=\"100%\"><tr align=\"right\"><td>";
    print "<a href=\"add.pl?key=$key&cat=$cat&forum=$forum&card=new&page=$page&position=$position&id=$card_num\">发表</a>\&nbsp;\;\n";

    if($page>1) {
$tmp_page = $page - 1;
print "\&nbsp;\;<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=1\" target=\"right\">第一页</a>";
print "\&nbsp;\;<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\" target=\"right\">上一页\&nbsp;\;</a>";
    }
    if($lastpage>1){
########### GoPage Display ############ 
if ($lastpage <= 10){
for($i=1;$i<=$lastpage;$i++){
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$i\">$i </a>";
}
}
elsif($lastpage>10 && $lastpage<100){
if($page>=10){
$ten=substr($page,0,1);
$lten=substr($lastpage,0,1);
$lnum=substr($lastpage,1,1);
for($i=1;$i<=$ten;$i++){
my $tmp_page="$i"."0";
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\[$tmp_page\] </a>";
}
if($ten<$lten){
for($i=1;$i<10;$i++){
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$ten$i\">$i </a>";
}
for($i=$ten+1;$i<=$lten;$i++){
my $tmp_page="$i"."0";
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\[$tmp_page\] </a>";
}
}else{
for($i=1;$i<=$lnum;$i++){
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$ten$i\">$i </a>";
}
}
}else{
$lten=substr($lastpage,0,1);
for($i=1;$i<10;$i++){
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$i\">$i </a>";
}
for($i=1;$i<=$lten;$i++){
my $tmp_page="$i"."0";
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\[$tmp_page\] </a>";
}
}
}
elsif($lastpage>=100){
$trd=substr($page,0,1);
$ten=substr($page,1,1);
$num=substr($page,2,1);
$ltrd=substr($lastpage,0,1);
$lten=substr($lastpage,1,1);
$lnum=substr($lastpage,2,1);

if($page<10){
for($i=1;$i<10;$i++){
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$i\">$i</a> ";
}
for($i=1;$i<10;$i++){
my $tmp_page="$i"."0";
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\[$tmp_page\]</a> ";
}
for($i=1;$i<=$ltrd;$i++){
my $tmp_page="$i"."00";
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\{$tmp_page\}</a> ";
}
}elsif($page>=10 && $page<100){
$ten=substr($page,0,1);
for($i=1;$i<=$ten;$i++){
my $tmp_page="$i"."0";
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\[$tmp_page\]</a> ";
}
for($i=1;$i<10;$i++){
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$ten$i\">$i</a> ";
}
for($i=$ten+1;$i<10;$i++){
my $tmp_page="$i"."0";
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\[$tmp_page\]</a> ";
}
for($i=1;$i<=$ltrd;$i++){
my $tmp_page="$i"."00";
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\{$tmp_page\}</a> ";
}
}elsif($page>=100){
for($i=1;$i<=$trd;$i++){
my $tmp_page="$i"."00";
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\{$tmp_page\}</a> ";
}
for($i=1;$i<=$ten;$i++){
my $tmp_page="$i"."0";
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$trd$tmp_page\">\[$tmp_page\]</a> ";
}
if($trd==$ltrd){
if($ten==$lten){
for($i=1;$i<=$lnum;$i++){
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$trd$ten$i\">$i</a> ";
}
}else{
for($i=1;$i<10;$i++){
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$trd$ten$i\">$i</a> ";
}
for($i=$ten+1;$i<=$lten;$i++){
my $tmp_page="$i"."0";
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$trd$tmp_page\">\[$tmp_page\]</a> ";
}
}
}else{
for($i=1;$i<10;$i++){
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$trd$ten$i\">$i</a> ";
}
for($i=$ten+1;$i<10;$i++){
my $tmp_page="$i"."0";
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$trd$tmp_page\">\[$tmp_page\]</a> ";
}
for($i=$trd+1;$i<=$ltrd;$i++){
my $tmp_page="$i"."00";
print "<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\">\{$tmp_page\}</a> ";
}
}
}
}
########### End GoPage Display ############ 
    }
    if($next_page) {
$tmp_page = $page + 1;
print "\&nbsp;\;<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$tmp_page\" target=\"right\">下一页</a>";
     print "\&nbsp;\;<a href=\"display.pl?key=$key&cat=$cat&forum=$forum&page=$lastpage\" target=\"right\">最后页</a>";
    }
    print "</td></tr></table>";




[此贴被 NetDemon(netdemon) 在 11月7日17时3分 编辑过]

地主 发表时间: 11/7 17:47

回复: syshunter [syshunter]   版主   登录
老大,能不能把print 后面的东西用汉字直接表示下,看着好累

B1层 发表时间: 11/08 09:01

回复: NetDemon [netdemon]   ADMIN   登录
print 根据lastpage 和 page 的不同而不同,绝不可能代替

当然可以把"<a href=\"display.pl?key=$key&cat=$cat&forum=$forum> </a>去掉

留下 page=$var1 . $var2 

B2层 发表时间: 11/09 00:06

回复: syshunter [syshunter]   版主   登录
这个我明白,我是说能不能给PRINT语句后面的页加个注释

B3层 发表时间: 11/10 17:13

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号