久久电影吧新站广告banner
网站首页 >> 建站技术 >> 文章内容

织梦留言本垃圾留言的批量删除,织梦留言本主页字段的轻松替换(经常更新中)

[日期:2013-10-21]   来源:站长天地(wanminw.com)  作者:大鹏展翅   阅读:2705次[字体: ]

     好多网友反映织梦自带的留言模块经常被注入垃圾留言,好多还是英文的,有些留言虽然不是垃圾,但是其留的个人主页多是一些购物网站的链接。久久电影吧(http://www.film-8.com)也深受其害,而在管理后台也没发现有批量删除留言的工具,只能一个一个的删除,很是麻烦,在官方论坛搜了一下,也没发现官方给出很好的解决方案。舍弃留言模块,对用户体验不好。最近笔者经过努力,发现了一个解决此问题的办法,希望对有同样困惑的网友能有帮助。
    据最近观察,几天后不审核的留言,自动不显示。但这些数据还存放在数据库里,占据着宝贵的数据库资源。如何实现这些垃圾数据的批量删除呢?
    首先在前台设置成留言需要审核后才能发布,平时有好的留言及时审核,不好的坚决不通过。

 

网站后台垃圾留言页面

与后台页面对应的未被审核的mysql数据库后台页面(图1)

 


    下面的方法是通过phpMyAdmin工具直接对织梦数据库里的数据表进行操作,为了安全起见,最好先通过后台的备份工具将数据库的所有表或部分表做一下备份,一旦误伤,也可以很快恢复。(具体方法详见织梦官网或百度一下)
    久久电影吧(http://www.film-8.com)用的是DedeCMSV57_UTF8_SP1代码(以下基于此版本的SQL代码经过测试能顺利执行,gbk的是否能成功执行还有待验证!)。
    通过phpMyAdmin(2.6.4-pl4)工具管理mysql数据库,实现垃圾数据的批量删除和更新。大家一定弄明白SQL语句的意义,再进行相关操作,否则容易造成数据库数据的丢失。首先您应有数据库的管理权限。本文直接通过phpMyAdmin管理的mysql数据库(本例以MySQL 5.0.27为测试数据库),以下代码都是在这个工具里测试的,织梦后台也有一个sql工具,有兴趣的可以试一下,代码是否也能成功执行。

    利用dede_guestbook字段ischeck(审核开关,1通过审核,0未通过审核)
    首先看一下dede_guestbook的数据库结构,了解这个后下面的命令出错的几率小点。

dede_guestbook的数据库结构

 

    让后台显示留言者的IP全址 ,而非222.77.*.*

找到guestbook.htm文件(位于/templests/plus/文件夹下)找到约115行的如下代码:

<td height="20">&nbsp;来自:<?php echo preg_replace("#[^\.]*\.[^\.]*$#","*.*",$fields['ip']); ?></td>,将其改为:

<td height="20">&nbsp;来自:<?php echo $fields['ip']?></td>

guestbook.htm页面修改ip和主页链接代码后的截图页面(图2)

 

    怎样查看未被审核的垃圾数据?
SELECT title,uname,ip,homepage,dtime,ischeck,msg FROM `dede_guestbook` WHERE ischeck=0

如图1


    查看某一IP地址(如:112.248.60.26.)的所有留言:
Select title,uname,ip,homepage,dtime,ischeck,msg FROM `dede_guestbook` WHERE ip='112.248.60.26'

 


    删除所有未被审核的垃圾留言。
Delete from dede_guestbook where ischeck=0

执行删除命令时出现的对话框

删除后已查不到原记录

    删除某一IP的所有留言(通常是被恶意刷贴的,如IP:112.248.*.*)

    由于织梦后台,看不到IP的完整信息(如:112.248.*.*可以用上文的方法将其改为显示IP全址),也可以通过上文的select语句来查找IP的完整信息(如:112.248.60.26),然后再删除。(此后的两语句笔者在织梦后台sql工具中成功执行)

SELECT title,uname,ip,homepage,dtime,ischeck,msg FROM `dede_guestbook` WHERE ischeck=0

Delete from dede_guestbook where ip='112.248.60.26' 

    织梦留言模块有一“个人主页”项,该项常是被恶意注入的要地,本可以删除此项,但不利于想展示自己主页的网友晒其个人网页,笔者通过修改guestbook.htm(位于/templests/plus/文件夹下)的代码,并将个人主页网址显示出来,如果是广告链,也可以对其删除。

    约128行有如下代码:

<a href='http://<?php echo $fields['homepage']?>' target='_blank'><img src='guestbook/images/home.gif' border=0 width='16' height='16' />[主页]</a> &nbsp;

将其改为:

<a href='http://<?php echo $fields['homepage']?>' target='_blank'><img src='guestbook/images/home.gif' border=0 width='16' height='16' />[主页]</a>——http://<?php echo $fields['homepage']?>&nbsp;

代码修改后的留言前台页面如图2所示。

    1、更新已审核的所有留言主页链接为http://www.film-8.com
update `dede_guestbook` set homepage = 'www.film-8.com' WHERE ischeck=1 

    2、更新某一IP(如:112.248.60.26.)的所有留言主页链接为http://www.film-8.com
update `dede_guestbook` set homepage = 'www.film-8.com' WHERE ip=’ 112.248.60.26’

    最近发现,有些留言并无恶意,但是留下的个人主页多是一些销售产品的网址,如果按以上的方法也行,但方法1太耗资源,方法2太慢,所以10月27日又推出了方法3。(方法3中的代码在织梦后台SQL工具中验证通过)

    3、查看所有主页不是http://www.film-8.com(网址可根据您的需要替换)的所有记录

SELECT title,uname,ip,homepage,dtime,ischeck,msg FROM `dede_guestbook` WHERE homepage<>'www.film-8.com'

    更新近期已审核的但是主页不是http://www.film-8.com(网址可根据您的需要替换)的所有记录

update `dede_guestbook` set homepage = 'www.film-8.com' WHERE homepage<>'www.film-8.com'

2013年10月27日执行方法3后的久久电影吧留言板截图

(文:大鹏展翅,作者系久久电影吧 站长,原文链接:http://www.wanminw.com/zztd/show.asp?id=31

分享到:
上一篇:没有了
相关评论