K2 for J1.5 多功能内容管理组件v2.4.1 多国语言版两个BUG

.发现在使用K2文章评论的时候,评论内容框不填写任何内容也会被提交上去,但是作者在代码里面写了判断默认的内容(空的内容)是不允许提交上去的,细心发现,作者在写判断的时候写错了,

解决方法如下:
找到网站根目录/components\com_k2\models目录下的item.php文件,找到在704行或者搜索$commentText
把:if ( empty($userName) || $userName==JText::_( 'enter your name...' ) || empty($commentText) || $commentText==JText::_( 'enter your comment here...' ) || empty($commentEmail) || $commentEmail==JText::_( 'enter your e-mail address...' )) { echo JText::_('You need to fill in all required fields!'); $mainframe->close(); }改成:if ( empty($userName) || $userName==JText::_( 'enter your name...' ) || empty($commentText) || $commentText==JText::_( 'enter your message here...' ) || empty($commentEmail) || $commentEmail==JText::_( 'enter your e-mail address...' )) { echo JText::_('You need to fill in all required fields!'); $mainframe->close(); }就可以解决这个判断错误了,主要是把enter your comment here…改成enter your message here… 因为作者把表单评论内容框的值默认是enter your message here…的,但判断值可能是因为手误的原因写错了,把它把回来就可以了,这样就不会出现不填写任何评论内容就会被提交上去了

  1. 作者在写处理判断评论内容框的时候有这么一句,if ($user->guest){ $db = & JFactory::getDBO(); $query = "SELECT COUNT(*) FROM #__users WHERE name=".$db->Quote($userName)." OR email=".$db->Quote($commentEmail); $db->setQuery($query); $result = $db->loadresult(); if ($result>=0){ echo JText::_('The name or email address you typed is already in use!'); $mainframe->close(); }这个意思是说,已经在同篇文章评论使用过的用户名或者使用过的电子邮箱地址是不允许再被提交上去的,但是你会发现,填同样的名字或者同样的电子邮箱地址也会被提交上去
  2. 解决方法如下:
    打开找到位于components\com_k2\models目录下的item.php文件,找到715行或者搜索#__users
    把这段代码:[code]if ($user->guest){
    $db = & JFactory::getDBO();
    $query = “SELECT COUNT(*) FROM #__users WHERE name=”.$db->Quote($userName)." OR email=".$db->Quote($commentEmail);
    $db->setQuery($query);
    $result = $db->loadresult();
    if ($result>=0){
    echo JText::_(‘The name or email address you typed is already in use!’);
    $mainframe->close();
    }

}[/code]改成:if ($user->guest){ $db = & JFactory::getDBO(); $query = "SELECT COUNT(*) FROM jos_k2_comments WHERE userName=".$db->Quote($userName)." OR commentEmail = ".$db->Quote($commentEmail); $db->setQuery($query); $result = $db->loadresult(); if ($result>=0){ echo JText::_('The name or email address you typed is already in use!'); $mainframe->close();我原来也想用#__users这个常量代表数据表的,但发现很慢,而且评论不动,我也不知道什么原因,后来干脆把它写成表名,改了代码后,评论过的用户名跟电子邮箱地址就变成唯一了,再写同样的用户名跟电子邮箱地址就不允许被提交上去了!