一个经得起时间考验的人
Discuz论坛实现Span检测功能(集成Akismet)
通过Akismet对PHP Discuz论坛的新帖子或者新回复进行检测,防止垃圾信息的生成。
大体思路如下:
1.使用Akismet提供的API对信息进行检测;
2.对信息的检测只针对特定的用户组,比如“新手上路”、分低于200或者发贴量少于50个帖子的用户,做此限制主要是为了不影响论坛的忠实支持者的操作;
3.用户提交的内容检测为Span时,阻止发贴、回复的操作,并提示用户,并记录用户提交垃圾信息的数次,当达到一定程序时将此用户禁言一定时间;
4.相关参数在后台实现设置接口。
5.在Discuz管理后台设置API Key,并检测API Key的有效性。
Akismet工作原理简介:当有一个评论时,插件会把它递交给Akismet服务器,那里有一张黑名单,如果评论榜上有名,那么就会自动被默认为Spam。如果被误认为Spam,你可以恢复它。
| 打印文章 | 这篇文章由admin于2009年02月7日 9:29 下午发表在公告。你可以订阅RSS 2.0 也可以发表评论或引用到你的网站。 |
没有引用
解决Discuz编辑器在Chrome/Opera/Firefox下的使用问题
大约1年前 - 没有评论
在Chrome中使用Discuz编辑器(Discuz6.0,Discuz6.1,Discuz7.0都存在这样的问题)的过程中可能遇到以下两个错误: 1.直接使用Discuz编辑器的所见即所得模式时: Uncaught TypeError: Cannot call method ‘appendChild’ of /include/javascript/editor.js:129 undefined 2.将Discuz编辑器从代码模式切换到所见即所得模式时(无法切换): Uncaught TypeError: Cannot call method ‘replace’ of /include/javascript/bbcode.js:387 undefined 第一个错误的出现在editor.js文件中的function setEditorStyle()函数中,解决办法是在 var headNode = editdoc.getElementsByTagName("head")[0]; headNode.appendChild(editcss); 中间加入: if(!headNode){headNode = editdoc.getElementsByTagName("body")[0];}//by ZZR 第二个错误实际是出现在bbcode.js文件中的function bbcode2html(str)函数中,原因是Chrome、Firefox中对函数的处理有点不一样,函数的最后一个元素是push。解决办法是在: re = new RegExp(addslashes(smilies[id]['code']), "g"); 的前面加入: if(isNaN(parseInt(id))) continue; //by ZZR 想偷懒的朋友,并且Discuz论坛版本为6.0的朋友可以直接下载www.zxlm.cn/fh/中对应的JS文件。 PS:BS一下Discuz的JS开发人员! 最后传一个第一个错误的效果图。 图片附件:
Discuz NT论坛日志引起的无法访问
大约2年前 - 没有评论
由Discuz NT构建的论坛,出现无法访问的情况,页面提示“与SQL Server 2000 的连接超时” 重启IIS,SQL Server都不起作用,检查数据库后发现论坛所使用的数据库 Discuz_NT 的日志文件的体积居然达到 23.5GB 将SQL Server的日志清理后,论坛恢复正常。 随后简单分析了一下SQL Server产生如此大日志的原因: 1.因为数据库Discuz_NT的故障还原模型为“完全”,从而在用户访问论坛、访问版块、访问帖子时都会有日志生成(在dnt_online中记录访问者的位置) 2.用户每访问一个帖子都会更改数据库中dnt_posts1中记录的帖子被访问的次数 综合以上的原因,从而使数据库的日志迅速增大。因此对于 Discuz NT 构建的论坛有必要经常清理日志、备份数据。 当然将数据库的故障还原模型(如何记录日志)设置为简单能够防止产生如此大量的日志,但是无法保证数据的安全。 如果在数据库中限制了日志的大小,那么出来的提示如下: 数据库 ‘Discuz_NT ‘ 的日志已满。请备份该数据库的事务日志以释放一些日志空间。 Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated
解决支付宝与Discuz!论坛接口问题HAS_NO_PRIVILEGE
大约2年前 - 没有评论
在Discuz!论坛使用支付宝求购时出现如下提示: 调试错误,请回到请求来源地,重新发起请求. 错误代码HAS_NO_PRIVILEGE 说明:如果您不是因为本接口集成调试而看见该错误提醒,请联系本次请求来源网站,本错误属于网站集成接口的错误。 具体的原因可以参考:支付宝关上网站集成服务的免费之门 通过修改Discuz!支付宝的API终于将此问题解决. 主要原因是Discuz!的API中原来集成的信息无法免费使用: 交易安全校验码(key):gh0bis45h89m5mwcoe85us4qrwispes0 合作者身份(partnerID):2088002052150939 所以通过修改解密的支付宝API(Discuz6支付宝API解密版)(alipayapi.php)中的这两个参数: define( "DISCUZ_PARTNER", "2088002052150939" ); define( "DISCUZ_SECURITYCODE", "gh0bis45h89m5mwcoe85us4qrwispes0" ); 即可解决"错误代码HAS_NO_PRIVILEGE"的问题,如:解决支付宝与Discuz!论坛接口问题HAS_NO_PRIVILEGE 或者使用Discuz!官方发布的Discuz!支付宝API补丁:6.0的支付宝接口升级文件
支付宝关上网站集成服务的免费之门
大约2年前 - 没有评论
Discuz论坛的积分充值功能突然无法使用,提示如下错误:不能充值 有错误提示 调试错误,请回到请求来源地,重新发起请求。 错误代码HAS_NO_PRIVILEGE 说明:如果您不是因为本接口集成调试而看见该错误提醒,请联系本次请求来源网站,本错误属于网站集成接口的错误. 查找相关资料后发现错误代码HASH_NO_PRIVILEGE 表示交易服务没有申请,如:只申请了“实物商品交易服务”,但订单中的商品是虚拟物品,这时必须申请“虚拟商品交易服务". 登录支付宝后发现"网站集成支付宝"中增加了一个"销售型网站",申请后发现接口已经不再免费了: 产品类型: 标准双接口600包42000 技术服务费:预交600元,在12个月内,可走合作交易流量42000元 ,超量后单笔费率 1.5 % 签约方式: 支付宝网站用户自助创建的默认费率合同 支付宝在免费集成到 Discuz 论坛取得大量用户后,终于按捺不住圈钱的诱惑放绝招了. 不过现在支付宝的"网上赠与服务"仍旧免费,考虑替换Discuz原有的积分充值功能.
为Discuz6中未设置Tag的主题自动生成Tag
大约2年前 - 15个评论
从Discuz论坛程序6.0开始,论坛主题开支持Tag,使得论坛帖子之间的相关性和用户之间的交互性大大增强。 但是我们论坛中以前的帖子怎么办呢? 所以我想到写这样一个脚本,来为Discuz6中未设置Tag的主题自动生成Tag。 2007-01-17日更新内容,增加帖子最大Tag的数量控制及随机Tag 下载最新版本: 附件:2008-01-17-tagcreate.zip(2811 Byte) 更新内容: //允许每个帖子的最大Tag个数,最大为5个。 $tagmax = 5; //随机生成帖子的最多Tag个数 //false 表示为每个帖子生成 $tagmax 个标签。 //true 表示为每个帖子生成小于$tagmax 大于0 个标签。 $tagradom = false; //用于生成Tag的内容,是否随机截取。 //false表示每个帖子都是取标题和帖子的前512个字符生成Tag //true 表示取帖子标题和帖子内容中的随机的512个字符生成Tag $contentradom = false; $tpp = 15; //允许程序每次处理的主题数目。 先让我们了解一下什么是Tag? Tag(中文叫做“标签”) 是一种新的组织和管理在线信息的方式。它不同于传统的、针对文件本身的关键字检索,而是一种模糊化、智能化的分类。 Tag是一种更为灵活、有趣的分类方式,您可以为每篇日志、每个帖子或者每张图片等添加一个或多个Tag(标签),你可以看到网站上所有和您使用了相同 Tag的内容,由此和他人产生更多的联系。Tag体现了群体的力量,使得内容之间的相关性和用户之间的交互性大大增强。 脚本见附件。 只需要把tagcreate.php放到论坛的根上好,然后在浏览器中打开就可以了。 脚本默认为每次设置15个主题的帖子。所以运行的时间会比较长。 $tpp = 15; //允许程序每次处理的主题数目。 脚本未对权限进行判断,所以大家最好在生成Tags后,删除此文件。 附件:tagcreate.zip(2550 Byte)
Discuz:DZ6通过标签(tag)实现相关主题彻底摆脱奇虎的解决方案
大约2年前 - 没有评论
Discuz6.0通过标签(tag)实现相关主题 1.给论坛原有的帖子全部都产生Tags,方法见:为Discuz6中未设置Tag的主题自动生成Tag 2.下载附件,把附件upload目录中的文件上传到论坛根目录替换原始文件. 在relatethread.php中有两个变量可以进行设置的,以提高相关主题的随机性。 附件下载: 附件:2008-01-17-discuz相关主题.zip(8110 Byte) 3.然后在论坛后台“扩展设置”-“奇虎搜索”- 按如下说明设置: *奇虎全文搜索设置 *|-启用奇虎搜索: 勾选“启用奇虎搜索全部功能” *|-显示论坛搜索框:全部不选。 *|-显示搜索结果摘要:按默认 *|-允许抓取干扰码帖子:按默认 *|-用户自定义专题数量:按默认 *|-推荐搜索关键词:空 *|-站长联系 Email:空,你也可以填,碰碰运气看能不能等到Qihoo开通你的帐号。 *专题设置 *|-这里不做任何设置 *相关主题设置 *|-显示相关主题数量:10 *|-是否显示站外相关主题:按默认 *|-显示站外相关主题类型:按默认 *|-站外相关主题过滤地址:按默认 *|-显示相关主题位置:根据你的喜好 以下内容为可选修改项 1.relatethread.php文件中的变量:用户控制如何生成相关主题 //生成帖子的相关主题是否使用帖子本身的Tags //false 使用帖子原有的Tags //true 每次都根据帖子内容重新生成Tags $usetagsenc = fase //用于生成Tag的内容,是否随机截取。 //false表示每个帖子都是取标题和帖子的前512个字符生成Tag //true 表示取帖子标题和帖子内容中的随机的512个字符生成Tag $contentradom = false; 2.修改templates.lang.php中的相关变量如下: ‘qihoo_hot_searches’ => ‘热门搜索’, ‘qihoo_topics’ =>
针对Adsense优化Discuz中的“上一页”和“下一页”
大约2年前 - 2个评论
使用Discuz的朋友都知道,Discuz支持URL重写。 这带来的好处就是有得于搜索引擎对网站的抓取。 不过在Discuz中有些地方的功能却破坏了静态URL的功能,比如“上一页”,“下一页”,“最后发表”等。 我在使用的过程中,同时发现放置了Adsense的页面会出现如下问题。 在一个静态的查看帖子的页面出现的是中文的广告,但是当我点击“上一页”,“下一页”进入的是一个非静态页面。 问题就在这里出现了,在这个非静态页面的显示的广告为英文广告。 而我使用URL重写功能进入静态页面时却出现中文广告,因此推测降低降低了广告的匹配度。 从而影响了广告的点击率。 针对此问题我特地改进了一下redirect.php页面,使“上一页”,“下一页”,“最后发表”等功能自动跳转到静态页面。 防止Adsense出现英文广告。 附件:redirect.zip(1239 Byte)
discuz论坛错误大全-管理人员必备
大约2年前 - 没有评论
信息1:Error: Access denied for user: ‘linanma@localhost’ (Using password: YES) 错误分析:这个是新手安装论坛经常出现的问题之一,产生原因一般有两种 1、数据库用户名或密码不正确引起的错误。 2、config.inc.php的属性不是777。 解决方法: 1、联系空间服务商询问正确的数据库服务器用户名和密码,记住是数据库服务器的密码,别弄错了。 如果是安装的时候出现这个问题,那就把正确的用户名和密码填到输入框中。 2、修改论坛根目录下的config.inc.php属性为777。用ftp软件登录到ftp站点, 选择config.inc.php点击右键-〉属性 设置为可读可写(即777)。 信息2:Error: Unknown column ‘msignature’ in ‘field list’ 错误分析:字面意思是说缺少’msignature’字段,一般情况是因为安装插件 时修改了程序文件而没有升级数据库造成的,或者是因为数据库和程序文件不 相匹配,也就是说数据库的版本和程序文件的版本不同(这里说都是discuz的 版本,比如数据库用的是discuz2.x的而程序文件是discuz4.0的,那肯定会 出现上述问题)。 解决方法:如果是安装了插件的,请仔细察看该插件安装的说明文件,看有没 有提供升级数据库的SQL语句,找到后以管理的身份进入“系统设置”-〉“数 据库升级”-〉拷贝你找到的升级数据库SQL语句到上面-〉“提交”。如果还 是没能解决问题的话,删除服务器上你修改过的文件,之后重新上传该文件到 相应目录(即,用你机子上的没有修改过的文件替换服务器上的文件)。如果 还没有解决问题,那请先确定你的数据库是discuz哪个版本的,之后上传这个 版本的程序文件到服务器。 信息3:Error: Can’t open file: ‘cdb_forums.MYI’. (errn 145) 错误分析:服务器非法关机,有可能会对部分数据库造成一定影响。一般运行会报错 **.MYI不能打开。 Can’t find file: ‘***.MYI’ 解决方法:用你下载的论坛压缩包里面utilities目录下的repair.php修复一下 具体方法:上传repair.php到论坛根目录下, 然后在浏览器运行http://你的论坛地址/repair.php
按需更改Discuz6的模板提高Adsense加载速度
大约2年前 - 没有评论
Discuz6在广告设置和显示的部分有了很大的改进,在管理后台有多种类型的广告选择,广告的显示方式不再拖慢网页具体内容的显示速度(广告代码放置在页面的最后,在所有广告加载完后再通过Javascript显示到对应的位置)。 但是我的论坛为了管理的方便,将统计亦通过广告的形式嵌入需要统计的页面。从而在一定情况下拖慢了其它广告的显示。为了防止统计代码的影响同时希望管理员或版主在线时隐藏所有的广告。 以下是我总结的一些更改广告显示方式的经验: 1.Discuz6的模板中广告代码的显示在 adv.htm 文件中进行设置; 2.如果需要在 adv.htm 文件中使用到Discuz中的其它变量,需要在adv.htm文件的第一行 <!–{eval global $tid, $fid, $thisgid, $catlist, $advitems, $postlist,$adminid;}–> 加入相应的变量。 因为广告模板是在Discuz的函数中解析而非{template header}的方式引入; 3.如下代码使管理员或版主在线时隐藏相应广告; <!–{if !in_array($adminid, array(1, 2, 3))}–> <div class="ad_footerbanner" id="ad_footerbanner3_none">$advlist[footerbanner3]</div> <!–{/if}–> 4.我的论坛的页内广告都是文字广告,所有希望在相应位置直接显示对应的广告,而不是通过Javascript的方式加载,防止加载广告里网页有一个拉长的效果。 修改viewthread.htm,forumdisplay.htm,discuz.htm三个页面: 将其中的: <div id="ad_text"></div> 替换成: <!–{if !empty($advlist['text'])}–><div class="ad_text" id="ad_text_none"><table summary="Text Ad" cellpadding="0" cellspacing="1">$advlist[text]</table></div><!–{/if}–>,并去掉 adv.htm 中的相应代码。 附件提供修改后的代码: 附件:zxlm-20071020.zip(32602 Byte)
Discuz论坛6.0初体验
大约3年前 - 没有评论
1.标签功能的引入使站内相关内容有机地结合起来。 使网站可以不再依靠垃圾“奇虎”实现相关内容。 2.实现了<meta name="description" content="">的自动获取,即截取帖子的内容作为description的内容。从而使网站对SEO更加友好。 3.添加了Sitemap.php文件,使网站的新内容更容易被Baidu收录。 4.Div+CSS的设计,减少了HTML代码量,使网站页面有效内容的比率增加,更有利于SEO。 5.所有广告在页面内容加载完后再显示,防止广告拖慢页面加载速度。 6.论坛样式由两个文件控制,更有得于盗用别的网站的样式,呵呵。广告发布者论坛风格 7.论坛管理人员可以在前台通过双击帖子内容快速编辑,方便管理。 等等。
大约7月前
很神奇的想法。希望有人写个插件。
大约7月前
Discuz 中的插件不像 WordPress那么方便。
所以要实现这样的功能,一般都要修改Discuz的相关文件才行。