修改限制discuz论坛注册名长度

3

分类 : 网络日志 | 发表时间 19-09-2009

论坛这种网站形式火热以来,就不断受到垃圾ID注册者、垃圾贴的骚扰,特别是现在网络营销的兴趣,大量的人肉注册id和人肉发贴的形式也广为出现,更有甚至,利用软件来注册ID,收藏发软文。总之,无所不用其极。今天,Linker介绍的只是一个小方法,根据朋友论坛的一些情况,做一些小小的限制。

其实限制论坛用户名注册长度,phpwind论坛很容易设置,奇怪discuz论坛搞得这么复杂?

discuz论坛,由下砂的说法,不建议大家来修改论坛用户名的长度,Linker也看了一些修改的方法,确实涉及到很多数据库表中字段的长度,以及程序代码上的配合,对于一般网站站长来讲,这人修改是有些危险,会引起其他一连串的问题,这个方法,不多讲,稍后Linker稍转载一些。

Linker今天所说的修改方法,不是要延长用户名的长度,而是要限制注册长度不能够太小,因为一些论坛注册机,会随机注册一些中文夹杂英文或者数字的注册,Linker大概浏览了一下,长度不外乎两个汉字一个英文或者一个数字,前段同限制了夹杂数字的注册,情况略有好转,但发现还有不少是汉字夹杂英文的注册,明显不知所以,明显是人肉营销者的ID,因此,考虑把discuz论坛用户名长度由最小的3个字符限制到7个字条,这样最少需要三个汉字和一个字母或者7个字母才能验证注册,两个汉字夹杂一个字母的注册就无法通过了。

修改方法:

打开模板文件中:templates.lang.php,查找“用户名小于3个字符”,修改为“用户名小于7个字符”,例如下:

 ’register_profile_profile_username_tooshort’ => ‘用户名小于7个字符’,

修改模板文件:register.htm 搜索以下内容:

if(unlen < 3 || unlen > 15) {
messagehandle_register(1, unlen < 3 ? profile_username_tooshort : profile_username_toolong);
return;
}

修改为:

 if(unlen < 7 || unlen > 15) {
  messagehandle_register(1, unlen < 7 ? profile_username_tooshort : profile_username_toolong);
  return;
 }

大家对比一下就明白了,把3改为7.

修改说到这里,Linker就打算适可而止了,不打算再作进一步的限制和研究了,其实也没找到真正的限制修改代码,内行人都看得出来,这只是一个表现现象,实际上即使注册时提示有“7个字符”的限制,你依然可以提交注册。

仅算抛砖引玉吧!欢迎高人再继续给一个指点。

discuz论坛也有修改用户名注册长度的提问,但官方对此不热情,可能修改实在过于繁琐,Linker搜索到一篇比较详细点的:

DISCUZ修改注册用户名长度的办法 discuz修改注册用户名的长度限制的方法 discuz的用户名限制不能超过15个字符长度,如果想要改的更长一些可以按照下面的方法修改,不过这样修改之后,如果将来升级的时候可能会带来麻烦,如果discuz新版本仍然将用户名限制在不超过15个字符,将需要对新版本做类似修改才能使用,并且有些需要增加数据表的插件可能也需要做调整.请想好了再做哦.以下按照把用户名长度限制在20个字符进行修改的,如果你想改成其他数值,那把下面的内容里的20改成其他数字就可以了!

首先,到discuz后台系统工具里数据库升级里执行:

alter table cdb_activityapplies modify username varchar(20);
alter table cdb_adminnotes modify admin varchar(20);
alter table cdb_announcements modify author varchar(20);
alter table cdb_banned modify admin varchar(20);
alter table cdb_creditslog modify fromto varchar(20);
alter table cdb_members modify username varchar(20);
alter table cdb_orders modify admin varchar(20);
alter table cdb_posts modify author varchar(20);
alter table cdb_pms modify msgfrom varchar(20);
alter table cdb_promotions modify username varchar(20);
alter table cdb_ratelog modify username varchar(20);
alter table cdb_rsscaches modify author varchar(20);
alter table cdb_sessions modify username varchar(20);
alter table cdb_threads modify author varchar(20);
alter table cdb_threads modify lastposter varchar(20);
alter table cdb_threadsmod modify username varchar(20);
alter table cdb_trades modify seller varchar(20);
alter table cdb_trades modify lastbuyer varchar(20);
alter table cdb_validating modify admin varchar(20);
alter table cdb_words modify admin varchar(20);

然后修改
各个模板目录下的register.htm(如果有的话)
把 maxlength="15" id="username" 里的15改成20
把 if(unlen < 3 || unlen > 15) { 里的15改成20

修改register.php把 if(strlen($username) > 15) { 里的15改成20

修改各个模板下的templates.lang.php,messages.lang.php(如果有的话)
把 超过 15 个字符 里的15改成20

修改wap/include/login.inc.php
把maxlength=\"15\" 里的15改成20

修改wap/include/pm.inc.php
把maxlength=\"15\"里的15改成20

最后就是修改api目录下的 passport.php,shopex.php,siteengine.php

if(strlen($memberfields['username'] = preg_replace("/(c:\\con\\con$|[%,\*\"\s\t\<\>\&])/i", "", $memberfields['username'])) > 15) {
$memberfields['username'] = substr($memberfields['username'], 0, 15);
}
里的15改成20

这里discuz论坛也有一篇方法和对文件的修改,由于需要金币购买,Linker不多转了:

http://www.discuz.net/viewthread.php?tid=1279272

discuz论坛限制重复主题,重复回复,连续回复,回复自动整合与要求中文回复的解决代码

2

分类 : 技术文摘 | 发表时间 17-09-2009

由于论坛的自由与共享,社区论坛火了这么些年,也有很多大的社区成功转型,获得了大把的金钱和流量,当然这是一个健康的循环模式,这些成功的社区模式无疑属凤毛麟角,另外还有更多的千万社区,还在垃圾与矛盾中徘徊,发展方向、技术、人力、资源等等,这都是问题。Linker结识的一些玩论坛的朋友,大多以玩为主,因此,谈不上战略发展,因此,对于discuz论坛的一些功能代码修改,都非常无助,辛苦在discuz论坛上和网络上搜索了半天,很多也是不得要解,今天,Linker特意寻找了一些有关discuz论坛限制重复主题,重复回复,连续回复,回复自动整合与要求中文回复的解决代码。

一、比如限制重复主题、重复回复的代码修改:

打开 include/newreply.inc.php, 查找:

$attachment = empty($attachments) ? 0 : 1;(discuz6.1的代码)

$attachment = empty($attachments) ? 0 : ($imageexists ? 2 : 1);(discuz7的代码)

在下面增加

// ********************* 重复回帖检测 *****************************

$repeatlevel = 2; // 重复回帖的验证级别,后面有详细说明。

$chk_sql = "SELECT COUNT(*) FROM {$tablepre}posts WHERE ";
$chk_term = "";
switch($repeatlevel) {
case 1:
$chk_term = "subject=’{$subject}’";
break;
case 2:
$chk_term = "message=’{$message}’";
break;
case 3:
$chk_term = "subject=’{$subject}’ AND message=’{$message}’";
break;
case 4:
$chk_term = "subject=’{$subject}’ AND message=’{$message}’ AND authorid=’{$discuz_uid}’";
break;
}
if($chk_term) {
$chk_num = $db->result($db->query($chk_sql . $chk_term), 0);
if($chk_num > 0) {
showmessage(‘请不要重复回帖,这很浪费资源的。请返回。’);
}
}
// ********************* 重复回帖检测 *****************************

 

关于回帖的重复检测级别,直接修改 $repeatlevel 参数就行了。下面是当这个变量的值为1~4的时候所代表的级别:

1 – 标题与数据库里的记录一致即算重复
2 – 内容与数据库里的记录一致即算重复
3 – 内容、标题与数据库里的记录都一致算重复
4 – 内容、标题、用户名与数据库里的记录都一致算重复

备注:上述代码据Linker测试验证,有着很大的弊端,在回复时会有大量的等待现象,可以得知是在遍历数据库查询,因此对于发贴和回复量比较大的论坛,Linker不建议采用这些办法来限制主题与回复的重复。

二、限制回复中文:

修改include/newreply.inc.php

找到  $author = empty($isanonymous) ? $discuz_user : ”;

在其下一行加入:

if(preg_match_all("/[\xB0-\xF7][\xA1-\xFE]/",$message,$regs)<=3) showmessage("请输入4个中文以上!");

这个方法,Linker在采用,速度显示很快,并且限制了诸如连续字母、连续数字、连续符号等输入,从而促进会员的主动回复。

三、还有一个限制主题与回复重复的方法,Linker没有具体测试,看代码,似乎也是遍历数据库查询的办法,也有可能造成回复的迟钝延时,但据discuz论坛网友说明,是付费获得的方法,有需要的朋友可以具体测试一下:

1,修改include/newreply.inc.php

找到

$author = empty($isanonymous) ? $discuz_user : ”;

在其下一行加入

        if($subject&&$db->result_first("SELECT * FROM `{$tablepre}posts` WHERE `subject` LIKE ‘$subject’ limit 0,1")) showmessage("<script>alert(‘标题与已有标题重复!’);history.go(-1)</script>");
        if($db->result_first("SELECT * FROM `{$tablepre}posts` WHERE `message` LIKE ‘$message’ limit 0,1")) showmessage("<script>alert(‘内容与已有内容重复!’);history.go(-1)</script>");

2,修改include/newthread.inc.php

找到

$db->query("INSERT INTO {$tablepre}threads (fid, readperm, price, iconid, typeid, author, authorid, subject, dateline, lastpost, lastposter, displayorder, digest, special, attachment, subscribed, moderated)
                VALUES (‘$fid’, ‘$readperm’, ‘$price’, ‘$iconid’, ‘$typeid’, ‘$author’, ‘$discuz_uid’, ‘$subject’, ‘$timestamp’, ‘$timestamp’, ‘$author’, ‘$displayorder’, ‘$digest’, ‘$special’, ‘$attachment’, ‘$subscribed’, ‘$moderated’)");

在其上一行加入

if($db->result_first("SELECT * FROM `{$tablepre}threads` WHERE `subject` LIKE ‘$subject’ limit 0,1")) showmessage("<script>alert(‘标题与已有标题重复!’);history.go(-1)</script>");

四、连续回帖自动改为在上面一楼追加【实用·长帖自动不追加·版块黑白名单】,测试discuz7有效。

//连续回复自动合并

$_insertword = "\n\n$discuz_userss 于 ".date("$dateformat $timeformat",
$timestamp)." 补充以下内容\n\n";//追加内容前缀

$_maxlength = 80;//字符数大于此值则一律不合并,注意1中文=2字符(GBK)或3字符(UTF)

$_reducesmile = 1;//设为1=去除表情之后计算字数,0=否

$_reducequote = 1;//设为1=去除引用之后计算字数,0=否

$_reducespace = 1;//设为1=去除空白换行之后计算字数,0=否

$_blackfids = array(18);//版块FID黑名单,此名单内不进行合并

$_whitefids = array();//版块FID白名单,此名单内进行合并,黑白名单同时存在时白名单
无效

//设置部分结束

if($_blackfids && $_whitefids) unset($_whitefids);

$temp = $message;

if(is_array($smilies))if($_reducesmile) foreach($smilies as $sm) {

$temp = str_replace($sm['code'], ”, $temp);

}

if($_reducequote) $temp = preg_replace("/\s*\[quote\][\n\r]*(.+?)[\n\r]
*\[\/quote\]\s*/is", ”, $temp);

if($_reducespace) $temp = preg_replace("/\s/is", ”, $temp);

$temp = trim($temp);

$length = strlen($temp);

unset($temp);

if($length <= $_maxlength && (!$_blackfids || !in_array($fid, $_blackfids))
&& (!$_whitefids || in_array($fid, $_whitefids))) {

$q = $db->query("SELECT authorid, pid FROM {$tablepre}posts WHERE
tid=’$tid’ ORDER BY pid DESC LIMIT 1");

$q = $db->fetch_array($q);

if($q['authorid'] == $discuz_uid && !$attachment && !$isanonymous) {

$message = $_insertword . $message;

$db->query("UPDATE {$tablepre}posts SET smileyoff = 0,
bbcodeoff = 0, message = CONCAT(message, ‘$message’) WHERE pid=’{$q['pid']}’");

showmessage(‘post_reply_succeed’, "viewthread.php?
tid=$tid&pid={$q[pid]}&page=".(@ceil(($thread['special'] ? $thread['replies'] :
$thread['replies'] + 1) / $ppp))."&extra=$extra#pid{$q[pid]}");
}
}

//连续回复自动合并

上述代码本来还有管理组不受限的功能,Linker觉得无此必要,管理组也不能特殊嘛,有需要的朋友,去discuz论坛搜索。

OK,有了这些,Linker觉得,已经方便很多了,但另一方面,Linker同时也告诫大家,论坛是要发挥会

google论坛也改版

6

分类 : 业界动态 | 发表时间 16-03-2009

今天看到google中文网站管理员博客中宣称,google网站管理员支持论坛也升级改版了。

互联网上的很多论坛程序,进行改版升级都比较负责,在功能和外观操作模式等方面,都有比较负责的表现,而观google网站管理员支持论坛,看改版,充分可以看出,什么是实用?这才是效率。当然,google网站管理员支持论坛,解决的就是实际的问题,而非玩笑的场所,花哨的功能,就免了;这也符合google以往所有产品的特点。

谷歌网站管理员支持论坛自2008年3月份成立以来,得到了广大网站管理员们的大力支持,已经成长为一个网站管理员们交流的平台。在这里,网站管理员们可以分享自己的经验以及谷歌搜索、网站管理员工具相关的知识。在此,我们要向那些在论坛中积极帮助他人的用户们表示真诚的谢意。

为了改进我们的工作,更加方便用户的使用,谷歌网站管理员支持论坛已于近期转移到了一个新的系统上。在新系统中,我们加入了很多新功能,比如用户的积分和升级,超级用户的评选等等。这些新的功能将使您更快捷地找到各类问题的解答,使您与别人分享心得的过程变得更加方便,从而进一步增强您与论坛的互动性。如果您想了解更多论坛的新功能,您可以阅读这篇谷歌官方博客(英文)。

在这里需要提醒大家的是,旧的论坛上的成员不会被自动转移到新论坛中。所以如果您一直在使用我们的论坛,并且想在新论坛中继续支持我们,您需要在新论坛上重新注册。很多常见的问题及其解答将会被转移到新的论坛,同时旧的论坛将以只读形式开放,您还可以阅读旧论坛上您觉得有用的帖子。

非常欢迎大家在新的谷歌网站管理员支持论坛上注册,同时如果大家对于新论坛有任何问题的话,也非常欢迎大家踊跃地提出。再次感谢大家的参与。

google论坛改版

这里是中文站长们互相交流有关抓取、收录、网站管理员工具相关问题,以及和谷歌交流的平台。每个页面的左侧都有论坛版面的分类类目,您可以选择浏览,首页右上角的公告栏将向您提供论坛的最新公告信息。

在发贴和提问之前,您不妨先查看一下这些常用资源: 

在发帖时,请您尽量将与问题密切相关的网址附在您的发贴中,以便在讨论中具体情况具体分析。如果您有关于AdSense的问题,请访问AdSense支持论坛;如果您想参与讨论Google其他产品,请访问Google产品中文论坛

谷歌网站管理员支持小组成员及唯一代表Google发贴的用户(用户名旁有“Google 员工”的字样):降龙十巴掌,趙錢孫李,小馬過河,城镇,草帽路飞,法人戴表。

—————————————————————————————————————————————–

AdSense 新版互助论坛发布

AdSense 论坛是发布商交流和分享的平台,所以我们一直在努力把这个平台建的更好,更方便使用。

我们现在刚刚发布了新版互助论坛,除了具有旧版论坛的功能以外,在这里您可以设置将别人对自己问题的回复和解答发送到您的邮箱,一旦有人回复您就可以收到,不需要不时登录论坛查看,使用起来更方便!

原来论坛的版主和 AdSensePro 也仍在会在新论坛为大家答疑解惑,新论坛还新增了公共栏,这样您在阅读论坛帖子的同时,还可以看到来自AdSense 官方博客的最新文章,了解 AdSense 的最新动态。

您可以使用您的 Google 帐户邮箱(如Gmail)注册新版互助论坛,现在就注册体验一下吧!注册新版论坛

同时我们还建议您将论坛地址加入您的网页收藏夹,以便日后访问。

早点注册吧,混个好资历先!google产品线拉得这么长,以后难免有疑问要提出。

利用mysql数据库中的TMD表修复论坛错误“is marked as crashed and last (automatic?) repair failed”

6

分类 : 网络日志 | 发表时间 09-03-2009

洗了把手,回到座位上,重新换了茶叶,续上水,然后点了根烟,吐一口舒心的烟圈,然后来细细描述一下,刚才的惊心之旅,是修复mysql数据库的惊险经历。

有几个朋友,论坛搞得都比较大,几位朋友都属于那种只会运营网站但几乎不懂任何网站技术的那种类型,现在这样类型的成功站长越来越多,相反,像Linker这样的崇拜技术至上的半吊子,总是在初级阶段,不断徘徊,不能不说是一种讽刺。由于接触时间长了,关系都比较要好,因此这些论坛在技术支持上,几乎全部都由Linker来维护,这问题倒也不大,几年都过来了,一直按计划有条不紊的维护、升级,期间有些小问题,都有惊无险的度过了,但这次,虽然事后也可以说是有惊无险,但不能不说是,是近几年来,比较险的一次了。

其中一位朋友的综合论坛,运营已经有快三年了,会员达到了十几万,每天也有上万的ip,几万的会员浏览登陆,近几天他说,论坛运行可能有些问题,主要体现在速度上,在执行写入、浏览页面时,页面会有明显的停顿现象,并且还有会员反映,会看到打不开页面,页面出现sql乱码的情况。针对这些情况,Linker心中已经有些概念,于是今晚午夜,决定对数据库进行一下例行维护。

修复论坛错误“is marked as crashed and last (automatic?) repair failed”的几种方法一文中(有些朋友可不大厚道,摘录了此文,作为自己的原创,更有甚至,改头换面,取其精华,作为自己的投稿、原创来做,让人汗颜,今晚搜索有关这方面问题时,才知道竟然有了这么多的CP,在遗憾之余也有些欣慰),第三种方法来修复数据库中的一些碎片,优化数据库的效果还是比较好的,并且速度也比较快,使用phpmyadmin太麻烦,使用discuz论坛提供的tools集合工作,修复起来速度太慢不说,几乎没有起过作用的,可能对于一些小的表错误问题,会起些作用。

登陆上服务器,以前的例行维护,是按照以下方法来做:

停掉mysql:net stop mysql,然后cd命令符至mysql的bin目录,再执行命令:myisamchk -r D:\MySQL\data\数据库名称\*.MYI,回车确定后,修复进程就在不断的一个表一个表,一行一行的修复中,这是discuz论坛上的童虎推荐的方法,效果比较好,推荐拥有独立服务器的使用,长期以来,Linker也一直在使用此方法来优化数据库,效果很好。但这次使用时,犯了一个错误。

也许是例行维护时间太长了吧,有些麻痹大意了,登陆上去以后,首先作了一些其它系统维护,然后就直接打开cmd,执行:myisamchk -r D:\MySQL\data\数据库名称\*.MYI,突然之间,本地主板的小喇叭连串的响了起来,这一报警不打紧,Linker立刻想起来,mysql服务还没有停掉,这样修复会直接破坏掉表的。马上关掉命令行窗口,然后立刻停掉mysql服务,再次打开cmd,执行:myisamchk -r D:\MySQL\data\数据库名称\*.MYI,本地主板小喇叭依然在响了七八次以后,然后才正常修复其它表,直至结束。心中有感不妙。

开启mysql服务,打开网站,惨了’members’ is marked as crashed and last (automatic?) repair failed,很明显,members表坏掉了,并且使用myisamchk 命令还修复不好。登陆phpmysql,显示cdb_members表在使用中,查看物理路径下表,对比了一下,一个月以前的备份,大小似乎正常。

到google、百度上搜索有关修复mysql数据库表crashed的文章,发现有关这方面的话题,除了Linker的“修复论坛错误“is marked as crashed and last (automatic?) repair failed”的几种方法”外,就属discuz论坛的这个页面流行度比较广,不外勿文初所述的三种方法,这三种方法,皆不能解决这个问题。查到国外的vbulletin.com论坛,看到有关帖子,并且还是由总版主、管理员回答的这方面问题,都是说此表已经损坏,修复几乎不可能,建议用备份来恢复,看到这些“权威”的论断,Linker心里真是“拔凉拔凉”的,由于朋友的论坛数据库比较大,因此Linker就有些懈怠,一个月左右才备份一次,这要把这个cdb_members表恢复到一个月前去,上万名会员数据就这样没了,并且可能还有着其它一些不可知的问题。

有关修复mysql数据库,还有一个命令:mysqlcheck

mysqlcheck -a -c -o -r –all-databases -uroot -p //这条命令是即可最佳化所有db数据库。

参数的意义如下:
-a = Analyse given tables.
-c = Check table for errors
-o = Optimise table
-r = Can fix almost anything except unique keys that aren’t unique

如果是在win主机下,修复指定的表,使用:mysqlcheck -o -r 数据库名称 -u root -p,在提示输入密码的框中,输入mysql的root管理密码,mysqlcheck即会对数据库进行检测修复。但很遗憾,Linker在使用了这个命令后,虽然成功执行了,但论坛表错误依旧,没有解决问题。

难道真的只有使用备份数据表来恢复了?……

打开备份的数据库目录,打开当前使用的数据库目录,看cdb_members三个表,两个目录切换来切换去,但突然感觉到,怎么有点不对?备份中的是:cdb_members.MYD,但有问题的数据库中,这个名称的表却是:cdb_members.TMD,奇怪了?正常情况下,没有看到TMD扩展名的表啊?这个TMD的扩展名可是味够浓的。

mysql数据库,数据表有三个文件支持,比如表 a041574875:
a041574875.MYI –> 索引文件
a041574875.MYD –> 数据内容文件
a041574875.frm –> 表结构文件

这个时候,却变成了
a041574875.MYI –> 索引文件
a041574875.TMD –> ?
a041574875.frm –> 表结构文件

mysql的TMD表究竟是什么文件?TMD文件是执行myisampack后生成的压缩文件,它可使文件压缩40%—70%。Linker也没查到更多的相关说明,只是发现有评论,称此文件出现,可能与硬盘问题有关,比如逻辑坏道等。Linker由此想来,估计和没有停掉mysql服务而执行myisamchk有关,这个TMD文件可能是一个备份或者待恢复机制下产生的文件。

不管那么多,通过扩展名排列目录结构,把所有TMD扩展名结尾的表全部修改为MYD结尾,然后再次执行“myisamchk -r D:\MySQL\data\数据库名称\*.MYI”(这些操作是在停掉mysql服务情况下进行的),这次没有再出现小喇叭报警的情况,执行完毕后,打开论坛,天啊,论坛页面打开正常了。赶快停掉数据库,重新备份数据库至其他服务器。至此,数据库总算给修复回来了。另:如果数据库表修复后,还会有出现TMD扩展名表的情况,就要真的查一查是否是硬盘的问题了。

这里说明一下,mysqlcheck 用在数据库服务器在运行的时候,而 myisamchk 必须是在数据库服务器被关闭的时候,因为它可能会和数据库本身的操作起冲突,会导致你的错误还没被修复,而新的损坏确已经出现。务必务必!

在有关使用mysql的TMD表恢复数据库的方法中,Linker最终查到的是知盾安全论坛中,2006年的一个帖子:用 TMD 文件修复损坏的 mysql 的数据库某个表,Linker到最后才发现,作者和Linker的问题几乎一致,并且解决思路也一样
,只是有一点点区别,Linker修改表的扩展名由TMD修改为MYD,执行Myisamchk后,数据库正常了,而知盾论坛文中,却没有解决,而是在使用mysqldump恢复数据库了以后,然后修改扩展名,数据库才正常的。

直到最后,总结一下,经历了那么多,查询了很多解决方案和实例,想了那么多思路,尝试了很多方法,事实上最终解决方法也是比较简单的。其中,也确实有幸运的成份。

给自己提个醒,硬盘有价,数据无价,再上两个硬盘,组Raid,专用来备份数据,使用计划任务来自动备份。另外,在处理长年累月的例行维护时,千万要头脑清醒,有条不紊、按步就班的持续进行,千万不要自恃已经非常熟悉了,而马虎大意;往往给事情造成重大损失的,不是什么也不会的生手,反而是有比较高权限的熟手。

上述的教训和敬告,要千万注意了。

“有道快贴”–网易推出类贴吧微论坛产品

1

分类 : 业界动态 | 发表时间 09-02-2009

这个“微论坛”称呼应该是比较别致了吧,搜索了一下,发现不是Linker的首创。

网易最近两年可以说是大手笔不断,比如最近的各类大型开源软件的网易镜像下载源测试网易“右键邮”邮箱客户端沙画现场表演 网易有道新闻发布会博客阅读工具:网易有道阅读器上线网易也提供免费域名邮局了,现在更牛,可以说是更大的举动:推出类似百度贴吧微论坛的产品–网易快贴。

直接访问http://tie.youdao.com进入有道快贴首页,有道快贴看起来跟百度贴吧有点类似,可以自由创建版面,不过目前已经有很多版面了,而且有的人气还不低,看来已经内测过一段时间了,不过还有很多热门话题版面没有被注册,比如百度贴吧上很热门的明星版面,大家注意及时抢了!

特别关注:有关于百度贴吧的例子,网易快贴这类形式,对于优化某些关键词及服务、产品、业务等,可是一个不错的宣传渠道啊!

有道快贴--网易推出类贴吧微论坛产品

有道快贴--网易推出类贴吧微论坛产品

discuz官方论坛的502页面

2

分类 : 业界动态 | 发表时间 06-02-2009

前几日曾经帮过朋友优化了下discuz论坛,今日受他之托,让帮给他论坛重新换一个比较个性一点的模板,这个比较简单,discuz论坛上面还是有很多很精品的共享模板的。但打开discuz论坛时,却发现了一些有意思的事情。

打开主页的时候,应该直接打开论坛主页的登陆页面的,但有意思的是,却打开了一个502页面。

 Discuz论坛的502页面

我们大家都比较清楚404以及302、301页面,对这个502页面却是知之不多,这是一个什么情况下服务器反馈的页面呢?

有关网页反馈502页面的问题说明:

1.502 Bad Gateway 服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。

2.是语音网关拒绝请求,一种可能是网络负载大,另一种可能是请求没在可以通过的权限之内。

3.坏门户代理服务系统收到了无效答复从在上游服务器。

另外, 502 坏门户错误遇到当设法使用ErrorDocument 处理请求502 Bad Gateway 服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。

一、此类问题多发生在 Discuz 的论坛上。
二、此问题一般由于后置服务器问题引起的。
三、有可能是在代理服务器环境下使用了过滤软件引起的,比如早期版本的ISA就有一个补丁专门解决这个问题。

解释下原因502 Bad Gateway 如果服务器,作为gateway或者proxy存在,从下行服务器上接收到了一个非法的应答(这个应答对应的请求是本服务器为了完成请求而转发给下行服务器的)。关于502 Bad Gateway的问题目前也仅此而已。

有关apache下用Http代理时502 Proxy Error错误解决方法,可以参考这里:http://javadonkey.javaeye.com/blog/218672

我当时登陆discuz时使用的是cc的代理,不知道是否和这个情况有关,不过当时出现这个情况时,刷新就OK了。

还有一个小现象,也比较异常,昨日发贴数为0,discuz出现这现象的机率不大吧? 

现在很多论坛内部出现问题,总是大事化小、小事化了,给外界一个模糊的感觉,事实上,这样一来,外界也会给当事者一个模糊的感觉,这样长此发展下去,反而对这样的门户网站不利。

discuz7所代表的论坛社区应用发展究竟路在何方

0

分类 : 网络日志 | 发表时间 12-10-2008

discuz7在dz官方已经切换上线,新的功能应用已经向大家展开了。

粗略在官方浏览了一些内容,让人欣喜的内容几乎没有,不过也确实做出了一些改进;相比以前版本,对于后台简便了操作,以往版本后台都比较复杂,在6.1之时更是做了很大改动,这对于不太熟悉后台操作的站长来说,有着很大的不便;因此,不太建议商业性版本的程序在后台的功能操作习惯上做出太过于频繁的变动;

改进的视频头像系统,支持gif动画,唉,只是稍稍花哨了些;

在安全方面加密了本地登陆,同时,像改变注册文件名称一样,可以改变后台的登陆文件名,就像dede的后台登陆一样。

任务系统这个功能应用,倒是一个不错的改进创意,对于活跃论坛、连接论坛的各个功能应用,有极大的促进作用,这正是论坛社区所迫切需要的,详细功能没有环境测试,但在功能上,如果能够实现消耗和获得积分、丰富应用、差异化体现,以激起会员的参与兴趣、活跃论坛气氛,这对于论坛站长来说,将是一件大好事;再结合sns的社会化应用、视频系统、cms系统、在线游戏系统,以会员活动为中心的内容体现,各系统之间既独立又融合,一个综合化的社区形象,自然而然巍然而起。

刚才提到的在线游戏系统,康盛创想置顶得真的不怎么样?

很多的成熟网站程序都在考虑结合广告联盟来帮助,或者说是利用站长来共同获利(免费提供程序,并非强迫参加,倒也无可非议),phpwind、dede等在绑定,discuz也不例外,这次又在结合“Yes玩”来忽悠广大站长,把“落伍”也给抬出来壮大声势,在线游戏是很有发展趋势,这个“三国在线游戏”更是发展得非常的声势浩大,商都信息港有专门的频道来推广,估计也是合作的。这个“Yes玩”中三国游戏现在也是主打,利用玩家的消费来给站长提成。

但论坛结合在线游戏不是这样结合的。看到此消息时,马上去“Yes玩”注册了一个站长接口,后来觉得这样快安装有些不妥,于是去落伍体验了一番。五分种就明白是什么基理了,引导注册而已。只是利用论坛的影响力来帮助这个在线游戏发展注册玩家而已,并没有真正为站长的社区提供更实际的应用。这对于大多数站长社区来说(落伍这样的当然除外),绝对的弊大于利,并且还有可能把一个正常的社区引导走入消亡,因为,这样的在线结合应用已经让一个正常的社区偏离了它自身的健康发展,而不是结合壮大它自身的发展。

康生创想是个不错的社区系统,其灵魂人物也是一个传奇,最近不断扩展的事件表示dz确实在寻求突破,被接连注资千万,收购ecshop、卖否、uch、sns的uhome到现在的卖掉ecshop,dz的不安分只是互联网不安分的一个角落,无数的社区系统站长在巴巴的望着,论坛运营模式的未来发展之路。

互联网风起云涌,英雄豪杰一代又一代,创新之路一波未平一路又起,功能为基,内容为实,应用为王,发展是硬道理,这大家都明白,但如何发展,考虑到最后,又有些迷茫了。

修复论坛错误“is marked as crashed and last (automatic?) repair failed”的几种方法

2

分类 : 网络日志 | 发表时间 04-04-2008

以前就讨论过很多论坛方面的问题,比如修复论坛数据库、优化论坛数据库以及优化论坛的访问负载能力,特别是这个discuz6版本,默认安装下的版本,真的是性能不敢恭维,难道稍大一点的论坛,都要用专用服务器来抗吗?难道每一个稍大点论坛都要有一个精通discuz论坛代码、精通mysql数据库的技术人员吗?这策略,太让人难以接受,以前的版本包括最近的discuz5.5就非常好,只是功能上稍欠缺了一些而已!因此,论坛,性能也是很重要的,phpwind这方面做得就是比discuz好,当然,最近几个phpwind版本,也在这方面有所忽视了。

今天遇到的这个问题过程是这样的:一个朋友论坛,他说有几个月没有优化了,discuz官方说,过几个月,可以优化一下数据库,提防碎片过多,影响论坛速度,因此我就登陆到他论坛后台,先更新了下系统缓存,然后直接点击优化数据库,提示有二百多M碎片数据表需要优化,这已经非常多了,默认是选择所有需要优化表状态,直接点击提交,进行优化。优化时,网站已经不能访问了,然后连接服务器,也出现连接非常缓慢的情况,怀疑是优化时占用资源过多,引起服务器响应不过来其他请求,假死机了。继续远程连接,仍然连接不上,无奈,只有关掉刚才的优化网页,依照经验,这时候是不能让机房重启服务器的,这种硬性的重启是非常容易损失表以及表中的数据库。关掉优化网页以后,等了一会,可以连接上远程桌面了,此时网站网页已经提示错误代码“posts’ is marked as crashed and last (automatic?) repair failed”,看越来是posts表损坏,自动修复没有成功。这个表存有大量的帖子数据,是非常重要而关键的表,这个表如果损失不能修复,论坛就要麻烦大了。

想了想,依据以前的经验,discuz论坛官方提供的有数据库修复文件“repair.php”,把此文件上传至网站后,在浏览器中运行此文件,可以依照提示“检测并修复数据库一次”或“检测并修复数据库五次”,用此文件没有用,修复完以后,状态都提示OK,但网页访问故障依旧。用discuz官方提供的“tools.php”,发现检测和修复数据库功能和“repair.php”差不多,只是集成了一些其他的工具。

到discuz论坛,以关键字“修复”搜索了下,发现童虎有一篇贴子“教你如何修复数据表”,其中提到了几种方法来修复数据表:

服务器非法关机,有可能会对部分数据库造成一定影响。一般运行会报错,**.MYI 不能打开。 Can’t find file: ‘***.MYI’ 请使用repair.php或者使用phpmyadmin修复一下数据表。

1.上传repair.php到论坛根目录下,然后在浏览器运行http://你的论坛地址/repair.php
一般点击第一个链接“repair.php?html=1&check=1”就可以修复了,
如果不能修复可以尝试点击第二个连接“repair.php?check=1&iterations=5”
就可以了。
提醒:修复完表操作以后一定记得要从服务器删除这个文件repair.php

2.使用phpmyadmin修复数据表
进入论坛数据库,然后选择要修复的表,在页脚下拉框选择“修复”即可。

3.如果您的服务器是独立主机强烈建议使用命令行方式进行修复:
修复前将mysql服务停止。
如果是Win主机,打开命令行方式,然后进入到mysql的/bin目录。
执行myisamchk -r d:\mysql\data\discuz\*.MYI
其中d:\mysql\data\discuz\换成您的数据库所在路径。
如果是类Unix主机,直接使用myisamchk -r 数据库目录\*.MYI 即可。

其中我用第二种办法时,在phpmyadmin中显示此表正在使用中,phpmyadmin修复操作无法对此表进行修复操作。那就用第三种办法了,朋友服务器用的是win服务器主机,于是打开命令行,首先停止mysql服务:net stop mysql,然后进入到mysql的bin目录,输入:myisamchk -r d:\mysql\data\discuz\*.MYI,如果是能确认是哪个表,也可以把前面的*号直接换为具体的表名称,一般全部修复没问题。回车确定后,修复进程就在不断的一个表一个表,一行一行的修复中了。

修复过后,启动mysql数据库,net start mysql,然后到浏览器,打开论坛页面,试着浏览帖子,发贴等,已经全部正常,至此完全恢复OK。

经验就不多说了,在操作过程中中断是非常可怕的事,当然,关机断电更可怕。另外,更重要的一点就是在出问题以后,进行操作修复以前,一定要停掉mysql,然后直接到data目录中,备份好你的数据库,这很关键;一定要是停掉mysql以后备份。备份,是一个很好的习惯!呵!!

声卡大亨创新叫停第三方驱动引发网络狂潮

0

分类 : 业界动态 | 发表时间 03-04-2008

昨天介绍了一则消息:创新制止的那个天才程序员开发的Audigy声卡Vista驱动 ,就是创新声卡这方面的事,一个程序员,自发的拓展了创新声卡的驱动,并提供给广大网友使用,引发了一些骚动,今天,又想新的风波……

自从Daniel_K,一位程序员在Creative论坛披露Creative一位高官要求他停止和散发自制的Creative声卡Vista驱动后,网络上迅速掀起了声势浩大的抗议声潮。Daniel_K发起的这个帖子已经呈爆炸式增长,原来的17页已经迅速增长到210页。人们纷纷谴责Creatvie,并发泄着对Creative的愤怒和不满。

一位玩家对Creative已经失去了信心:"从Soundblaster 16开始,包括Creative音箱,DVD驱动器和XiFi声卡,我已经买了超过1000美元的Creative产品。我最近的购买是用Xi-Fi声卡取代了Audigy 2 ZS声卡。现在正是Creative的关键时期,因为独立显卡正在萎缩,Creative需要高端发烧友市场,那么为什么要抛弃我们呢?而另一位则拿 NVIDIA为例,指出Creative不应该放弃对产产品的支持:"我可以提醒你们,NVIDIA仍在支持包括GeForce 5, 6, 7和8在内的新老显卡。他们有XP,XP64,Vista,Linux和Mac OS驱动。老显卡仍可以获得性能提升而不是成为废品。"

一些更为激进的玩家甚至注册了一个名为抵制Creative的网站,号召大家停止购买Creative的产品,网页上如是写到:

" 自从Windows Vista发布起,这家公司就不愿为他们的旗舰产品开发驱动,尽管实际上该产品可以在Vista上驱动。一位名叫daniel_k的用户一个人承担了这个工作并成为网友和消费者获取驱动的主要贡献者。这个用户编写了Vista驱动但该公司却并不高兴。事实上,Creative这样做是为了让人们购买可以被"适当驱动支持的"更新的声卡产品。他们的抢钱行径是如此昭然若揭和令人震惊。

他们可以以盗窃知识产权为由,以采取法律行动为由威胁daniel_k来要求他停止开发驱动,但实际上,他们也欺骗和愚弄了那些从daniel_k工作中受益的消费者。"

具有讽刺意义的是,在Creative以法律作为威胁利器的同时,一些用户已经准备针对Creative的群体诉讼案。他们认为,Creative在声卡包装上贴上了Vista Ready标签,但事实上,声卡却无法在Vista下正常工作。

这不仅仅是驱动方面的利益以及尊严伤害,而是最根本的,创新这个行为挫伤了广大网民对于网络共享自由精神的信仰,对于强者的这种行为的抵触,对于这种做法的极度反感;而事实上,创新的这个驱动,不影响使用你创新的硬件啊,驱动只是你商业环节当中的一个售后服务环节,这是一个补充,而不是一个竞争!

对于Creative而言,重要的不是一款驱动的缺失,而是消费者信任的丧失。大品牌,很多大品牌,得学习,得领悟这个新的情况了。

discuz论坛W3WP.exe占用CPU100%的几个解决办法

1

分类 : 技术文摘 | 发表时间 27-01-2008

discuz6论坛版本,应该是比较稳定的版本了,但从phpwind6转过来以后,w3wp一直占用cpu居高不下,有时候百分之百,让人十分闹心;以下是一些在实际应用中,遇到的现象和相应的解决方法,更多的测试解决方案,可关注discuz论坛,另外,官方在这上面的努力,让人十分被动。

1:插件问题;把其中装的插件都去掉论坛好了,又正常了,经过对比,发现是一个首页四格出现的问题,建议大家选择插件安装的时候一定要先对插件进行评估

2:cc攻击问题;网站前一段时间老是IIS不够用,SERVEIS UNABLE,一打开站点就是这样,有时候还出现数据库错误原因,服务器CUP占用100%,头疼啊,经过分析,去掉一些插件后,数据库不在出现错误了但是提示连接不够,但是还是SERVIES UNABLE,这就奇怪了,我一个服务器只装了一个论坛,切数据库的连接数目我设置的是5000不可能不够的,经过分析,找人请教,原来是论坛被人CC了,这个时候DZ有个防止攻击的策略,在论坛的跟目录有个文件叫 CONFIG。INC。PHP,打开这个文件,把方式攻击的那一项设置成1|2|4。意思是防止速度刷新,限制2次访问的时间,记录COOKIES什么的,这个时候论坛又恢复的,服务器CUP降低下来了,安心了!

3:这次又是CUP占100% 服务器假死,论坛打不开,郁闷,卸载了所有插件,还是100%。设置成1|2|4,论坛正常,但是一去掉1|2|4,服务器CPU立即上升到100,还是W3WP这个进程占了100%,这绝对不可能是黑客攻击了,如果是的话,黑客也不可能坚持一个月攻击的,怎么办,怎么解决,到网络上搜索,基本上都是老套路,不管用
最后最后发现XIAOHUI的一片文章专门写的是服务器CUP100%的解决方法,这是针对数据比较多的论坛的,我论坛数据库大概100W条,是数据库数据量比较大,数据表没有索引导致的,在数据库里面执行下列语句添加上索引,问题解决了
ALTER TABLE `cdb_pms` ADD INDEX ( `folder` );
ALTER TABLE `cdb_threads` ADD INDEX ( `displayorder` );
ALTER TABLE `cdb_threads` ADD INDEX ( `dateline` );
ALTER TABLE `cdb_threads` ADD INDEX ( `closed` );
ALTER TABLE `cdb_threadsmod` ADD INDEX ( `dateline` );
ALTER TABLE `cdb_sessions` ADD INDEX ( `invisible` );
ALTER TABLE `cdb_forums` ADD INDEX ( `type` );
ALTER TABLE `cdb_forums` ADD INDEX ( `displayorder` );

XIAOHUI的文章地址是http://www.xiaohui.com/dev/server/20070701-discuz-mysql-cpu-100-optimize.htm

事实上,我应用了上述几种方案以后,cpu高居不下的现象是稍稍缓和,但还是占用cpu相当高,百分之三十多时而有之,内存也占用很不正常,非常郁闷。真是进退两难。

无觅相关文章插件,快速提升流量