一个分享个人学习、开发经验的Blog,http://www.joyphper.net

kingcms 6.0 bug 之翻页PID无法替换问题解决

posted @ 2010-09-10 00:19 | 阅读:3549 | 评论:1 | 分类: PHP

 用kingcms没有多久,今天去后台看了一个网站处理日志,发现一个很奇怪的问题,当我点下一页的时候始终是在第一页面,开始我没有注意url地址的问题,后台仔细一个点下页和分数分页的时候地址者是/system/manage.php?action=log&pid=PID&rn=20,想想那个PID是什么东西呢,在地址里者没出现页码值,想必那个PID应该就是页码了吧,于是我把PID手动输入一个2果然跳到了第二页。是什么原因导致了这个情况呢?于是我顺着处理文件查找,在system/lib/func.php文件中找到了那个处理url地址替换PID的值的地方

function kc_formatPath($path,$pid=1,$is=0){
 global $king;
 if($path==''){
  return False;
 }elseif(strpos($path,'PID')===False){//若不包含PID,则根据需要进行补充
  if(substr($path,-1,1)=='/'){//目录结构
   if($pid=='1'){
    $path= $is ? $path.$king->config('file') : $path;
   }else{
    $path=substr($path,0,strlen($path)-1).$king->config('pidline').$pid.'/'.($is ? $king->config('file') : '');
   }
  }else{//文件结构
   $ext=strrchr($path,'.');
   $fname=substr($path,0,strlen($path)-strlen($ext));
   if($pid==1){
    //$path=$fname.$ext;
   }else{
    $path=$fname.$king->config('pidline').$pid.$ext;
   }
//   kc_error($path);
  }

 }else{//有PID
  if(strpos($path,$king->config('pidline').'PID')>0){
   $path=str_replace($king->config('pidline').'PID',$pid==1?'':$king->config('pidline').$pid,$path);
   if($is && substr($path,-1,1)=='/'){//输出生成地址
    $path.=$king->config('file');
   }
  }else{
         $path=str_replace('PID',$pid==1?1:$pid,$path);
         if($is && substr($path,-1,1)=='/'){//输出生成地址
                $path.=$king->config('file');
          }
  }
 }
 return $path;
}

红包部分是我自己加上去的,以前系统默认情况下查找的字符是$king->config('pidline').'PID',$king->config('pidline')后台可以设置,默认是'-',于是问题就来了,在日志分页的时候只有一个单独的PID前面是没的'-'的,自然就不会替换了。

改的程序在上面,相信有一点基础的人都能看得明白,所以就不多做解释了。。。

看完转载请写明来源,谢谢。。。同时记住我我博客地址:http://www.joyphper.net

TAG: bug , kingcms

共有1条评论 发表评论>>

Butch 发表于:2016-05-18 21:09
Hey there! I know this is kind of off topic but I was woinerdng if you knew where I could locate a captcha plugin for my comment form? IR17;m using the same blog platform as yours and IR17;m having problems finding one? Thanks a lot!
点击换一张验证码