F2Cont 1.1评论及回复页部分有问题代码修改


今天在回复别人的评论的时候,正好看到评论页有一处小BUG,具体表现在如果回复时不输入网址信息的话,会自动输入http://作为网址信息。这样就导致了评论里始终有网址这个链接,打开reply.php和replylogs.inc.php,查看http://所在的代码,具体如下:

  1. if (isset($_POST['homepage'])) {
  2.    if (strpos(";".$_POST['homepage'],"http://")<1) {
  3.     $_POST['homepage']="http://".$_POST['homepage'];
  4.    }
  5.   } else {
  6.    $_POST['homepage']="";
  7.   }


基本上两个文件里都有相同的代码。找到问题原点的话,接下来就是分析代码存在什么问题了,经过我一下午的逻辑分析,我发现问题出在isset上。这里的isset的意思就是如果网址存在信息,那么空信息算信息吗?显然,系统对代码解析后,反馈出来的结果告诉我们,为空信息的时候,这里的isset也是把它包含进去的。这样的话就等于说,如果评论时网址栏没输入任何信息的话,依然会执行{}中的代码。而在{}中的代码,用的是如果在网址函数中找不到http://的信息时,自动添加http://,因为这里用的算法是<1,也就是说0和为空都要添加http://,所以也就造成了如果评论时网址栏不输入任何信息的话,系统会自动添加http://并且记录到数据库中。

找到了问题的根本的话,就好解决了。抛弃isset函数,用!empty函数作非空判断。只要把isset更改成!empty就成了。具体代码如下:

  1. if (!empty($_POST['homepage'])) {
  2.    if (strpos(";".$_POST['homepage'],"http://")<1) {
  3.     $_POST['homepage']="http://".$_POST['homepage'];
  4.    }
  5.   } else {
  6.    $_POST['homepage']="";
  7.   }


最后考虑到留言板还有编辑/删除页也有网址输入栏,所以依样画葫芦,找到guestbook.inc.php和editdel.php,打开后找到http://所在,然后把所有isset改成!empty,这样就把问题全部解决了。

不过这些弄完之后我发现了一个新的问题,在编辑/删除页里。如果在此页中修改留言的网址栏,比方把http://www.test.com改成www.test.com,系统会自动补充http://。但是如果是修改评论的话,就不会自动补充。解决的办法其实非常简单。打开editdel.php,找到如下代码:

  1. if ($_GET['load']=="read" && is_numeric($postid) && is_numeric($id) && is_numeric($_GET['page'])){//评论
  2.   $Title=$strCommentsEditTitle;
  3.   $posturl="$PHP_SELF?load=".$_GET['load']."&page=".$_GET['page'];
  4.   $op_table=$DBPrefix."comments";


然后把上面这段代码之后,“//留言”这行代码之前的代码替换成如下代码,就可以解决了。不知道为什么,留言处代码被F2Cont团队修正了,评论处却没有。

  1. if (!empty($_POST['homepage'])){
  2.    $_POST['bookface']=!empty($_POST['bookface'])?$_POST['bookface']:"face1";
  3.    if (strpos(";".$_POST['homepage'],"http://")<1) {
  4.     $_POST['homepage']="http://".$_POST['homepage'];
  5.    } else {
  6.     $_POST['homepage']=$_POST['homepage'];
  7.    }
  8.  
  9.   $op_update=",homepage='".encode($_POST['homepage'])."',email='".encode($_POST['email'])."',face='".substr(encode($_POST['bookface']),4)."'";
  10.   }else{
  11.    $op_update="";
  12.   }


虽然都是些鸡毛蒜皮的小问题,而且最终我也都解决了,但是在过程中也折射出了我自身知识的匮乏。一个下午就泡在这个上面,最后发现仅仅是修改几个字就能完美解决。唉,今后我也会找点PHP知识来恶补一下,F2Cont 1.1应该还有很多值得修正的问题等着我去发现,并且把它解决掉!自己为自己先加油一下!

引用通告地址: http://www.pineapple12.info/trackback.php?tbID=417&extra=51691b
标签: F2Blog 代码修改 疑难杂症
评论: 2 | 引用: 0 | 阅读: 435
  • 1 
小明猪 [ 2010-03-07 09:57 网址 | 回复 | 编辑/删除 ]
哈哈,加油加油~~
ふわふわ鳳梨派 [ 回复于2010-03-07 11:36 邮箱 网址 | 编辑/删除 ]
去你的博客申请友情链接了,请问有中意的友情链接Banner吗?没有的话我就帮你做喽!
  • 1 
发表评论
昵 称(*): 密 码:
网 址: 邮 箱:
选 项:    
头 像:
内 容(*):