原话如此: "虽然不能完全解决 Spam 的问题, 但至少还可以先凑合一下!"
升级前请备份好数据库和相关文件…

升级数据库, 升级程序在2.0.311文件包里有, 文件包在这里下载. 上传_upgrade_2.0.304_2.0.310.asp 运行这个文件升级数据库, 升级完成后请记得删除 _upgrade_2.0.304_2.0.310.asp 文件.

修改文件
1. 根目录下的admin.asp
第240行左右找到

 <td class="formbox-rowheader"><%=lang$[$"enable_guestbook"$]$%>:</td>

<td class="formbox-content"><input type="checkbox" name="enableGuestBook" value="true"<%if(theCache.settings["enableGuestBook"]==1)write(" checked=\"checked\"")%> /> <%=lang["enabled"]%></td>
</tr>[/code]在前面添加

 <td class="formbox-rowheader"><%=lang$[$"max_comment_url_count"$]$%>:</td>
 <td class="formbox-content"><input type="text" name="maxCommentURLCount" size="4" value="<%=theCache.settings$[$"maxCommentURLCount"$]$%>" maxlength="4" class="text" /> <%=lang$[$"max_comment_url_count_note"$]$%></td>
 </tr>
 <tr>

2. 根目录下的_common.asp
第8行左右找到

var blogVersion="2.0.304"

修改为

var blogVersion="2.0.311

3. class里的functions.asp
第325行左右找到

 // Random String Generator -------------------

在前面添加

 // Count URL in message -----------------------
 this.countURL = function(strMessage){
 var m = strMessage.match(/http\:\/\//ig);
 if(m==null) return 0;
 return m.length;
 }

4. source目录下的src_admin.asp
第200行左右找到

connBlog.exec(genIntUpdate("maxcommentlength",99,2001));

在前面添加

connBlog.exec(genIntUpdate("maxcommenturlcount",-1,11));

5. source目录下的src_comment.asp
第243行左右找到

 // Check content
 input$[$"message"$]$=func.trim(input$[$"message"$]$);
 if(!input$[$"message"$]$){
 strError+="<li>"+lang$[$"content_blank"$]$+"</li>";
 }else{
 if(input$[$"message"$]$.length>theCache.settings$[$"maxCommentLength"$]$||input$[$"message"$]$.length<2){
 strError+="<li>"+lang$[$"length_invalid"$]$+"</li>";
 }
 if(func.countURL(input$[$"message"$]$)>theCache.settings$[$"maxCommentURLCount"$]$){
 strError+="<li>"+lang$[$"comment_url_count_block"$]$+"</li>";
 }
 input$[$"message"$]$=func.wordFilter(input$[$"message"$]$);
 if(!input$[$"message"$]$){
 strError+="<li>"+lang$[$"wordfilter_block"$]$+"</li>";
 }

 }

修改为

 // Check content
 input$[$"message"$]$=func.trim(input$[$"message"$]$);
 if(!input$[$"message"$]$){
 strError+="<li>"+lang$[$"content_blank"$]$+"</li>";
 }else{
 if(input$[$"message"$]$.length>theCache.settings$[$"maxCommentLength"$]$||input$[$"message"$]$.length<2){
 strError+="<li>"+lang$[$"length_invalid"$]$+"</li>";
 }
 if(func.countURL(input$[$"message"$]$)>theCache.settings$[$"maxCommentURLCount"$]$){
 strError+="<li>"+lang$[$"comment_url_count_block"$]$+"</li>";
 }
 input$[$"message"$]$=func.wordFilter(input$[$"message"$]$);
 if(!input$[$"message"$]$){
 strError+="<li>"+lang$[$"wordfilter_block"$]$+"</li>";
 }

 }

6. source目录下的src_gbook.asp
第220行左右找到

 // Check content
 input$[$"message"$]$=func.trim(input$[$"message"$]$);
 if(!input$[$"message"$]$){
 strError+="<li>"+lang$[$"content_blank"$]$+"</li>";
 }else{
 if(input$[$"message"$]$.length>theCache.settings$[$"maxCommentLength"$]$||input$[$"message"$]$.length<2){
 strError+="<li>"+lang$[$"length_invalid"$]$+"</li>";
 }
 input$[$"message"$]$=func.wordFilter(input$[$"message"$]$);
 if(!input$[$"message"$]$){
 strError+="<li>"+lang$[$"wordfilter_block"$]$+"</li>";
 }
 }

 return strError;

}

修改为

// Check content
 input$[$"message"$]$=func.trim(input$[$"message"$]$);
 if(!input$[$"message"$]$){
 strError+="<li>"+lang$[$"content_blank"$]$+"</li>";
 }else{
 if(input$[$"message"$]$.length>theCache.settings$[$"maxCommentLength"$]$||input$[$"message"$]$.length<2){
 strError+="<li>"+lang$[$"length_invalid"$]$+"</li>";
 }
 if(func.countURL(input$[$"message"$]$)>theCache.settings$[$"maxCommentURLCount"$]$){
 strError+="<li>"+lang$[$"comment_url_count_block"$]$+"</li>";
 }
 input$[$"message"$]$=func.wordFilter(input$[$"message"$]$);
 if(!input$[$"message"$]$){
 strError+="<li>"+lang$[$"wordfilter_block"$]$+"</li>";
 }
 }

 return strError;

}

7. source目录下的src_trackback.asp
第127行左右找到

 // These function calls look really horrible

在前面添加

 if(func.countURL(tbEntry.excerpt)>theCache.settings$[$"maxCommentURLCount"$]$){
 trackbackResponse(1, "Excerpt contains too many urls");
 }

8. lang目录下admin.asp
任意地方添加

 t$[$"max_comment_url_count"$]$="Max URL Count in Comment";
 t$[$"max_comment_url_count_note"$]$="<span class=\"comment-text\">(Block when exceeded)</span>";

9. lang目录下blog.asp
任意地方添加

 t$[$"comment_url_count_block"$]$="The number of URLs in your comment exceeds the limit.";

测试通过! 放心使用