让 phpwind 论坛禁止某些邮箱的注册

换用 phpwind 做为论坛系统后,注册机乱注册的用户就一堆一堆的过来,为了阻止注册机的注册,启用了比较复杂的验证码,把注册文件改名、邮件验证等,做了这些之后,确实挡住了一大部分的注册机。消停了一阵后,又来了,还好,这些注册机注册时使用的邮箱都是某些固定后缀,好办了,在注册过程中禁止这些后缀的注册。
phpwind 论坛只提供了允许指定邮箱注册的功能,那不行啊,我是想禁止指定邮箱的注册,phpwind 论坛并没有提供这样的功能,在 phpwind 的官方论坛上,有不少人建议增加这个功能,直到 7.3.2 版还是没有增加。咱们只能是自己动手了。

2009.12.04注释:可以略过这段,往下看更新过的代码
好,修改注册文件,一般是 register.php,找到这些,大概是在 73 行:

if (!$email || !preg_match("/^[-a-zA-Z0-9_\.]+@([0-9A-Za-z][0-9A-Za-z-]+\.)+[A-Za-z]{2,5}$/",$email)) {
	echo 1;
	ajax_footer();
}

这段代码就是验证注册的邮箱是否合法,那好,在下面加这些就可以了:

if (strpos($email, "@designhot.net.cn")) {
  echo 1;
  ajax_footer();
}

意思就是说,如何邮箱是以“@designhot.net.cn”结尾的,那就是非法了,哈哈,搞死你注册机
要是禁止多个呢,就把这段多写几遍就好了。
还有,再找到这句:

if (empty($regemail) || !ereg("^[-a-zA-Z0-9_\.]+\@([0-9A-Za-z][0-9A-Za-z-]+\.)+[A-Za-z]{2,5}$",$regemail)) {
	Showmsg('illegal_email');
}

在这后面加上:

else if (strpos($regemail, "@designhot.net.cn")) {
	Showmsg('illegal_email');
}

同样,如果有多个要禁止的邮箱,就把上面这句多写几遍就好了。
我发现的注册机的后缀有:
@designhot.net.cn
@cpok-bdqn.com.cn
@bdqncpok.com.cn
@bdqnok-cp.com.cn
@cp-bdqnok.com.cn
@company-mail.cn
@delu(这个比较烦,有 @delu1.com、@delu8.com 等)
@newline.net.cn
@marketnet.com.cn
@hongkong-seo.com

2009.12.03更新,偶然无聊,发现老窝了,这些都是一个地方出来的:
@chongsoft.org
@wormseo.cn
@wormseo.com
@chongsoft.cn
@zyseo.com
@seorj.cn
@qqneiyi.cn
@chongblog.cn
@chongblog.com
@71mail.com.cn
@designhot.net.cn
@marketnet.com.cn
@newline.net.cn
@company-mail.cn
@cpok-bdqn.com.cn
@cp-bdqnok.com.cn
@bdqncpok.com.cn
@bdqnok-cp.com.cn
@bdqn-hicp.com.cn
@wormsoft.cn
@chongseo.net
@chongseo.cn
@chongseo.com
@huiseo.cn
@csoftmail.cn
@xdseo.com
不用说,都屏蔽丫

2009.12.04更新
越来越多的邮箱都发垃圾,为了方便改代码,上面说的代码可以不用考虑了,用下面这个好了:
还在 register.php 文件里,先在文件开头部分,大概第10行左右,就是“if (GetGP(‘vip’) == ‘activating’) {”之前,写一个自己的函数:

function osnaile_isgoodmail($email) {
	$spamemail = array(
"@chongsoft.org",
"@wormseo.cn",
"@wormseo.com",
"@chongsoft.cn",
"@zyseo.com",
"@seorj.cn",
"@qqneiyi.cn",
"@chongblog.cn",
"@chongblog.com",
"@71mail.com.cn",
"@designhot.net.cn",
"@marketnet.com.cn",
"@newline.net.cn",
"@company-mail.cn",
"@cpok-bdqn.com.cn",
"@cp-bdqnok.com.cn",
"@bdqncpok.com.cn",
"@bdqnok-cp.com.cn",
"@bdqn-hicp.com.cn",
"@wormsoft.cn",
"@chongseo.net",
"@chongseo.cn",
"@chongseo.com",
"@huiseo.cn",
"@csoftmail.cn",
"@delu",
"@hongkong-seo.com",
"@xdseo.com"
);
	foreach ($spamemail as &$spam) {
		if (strpos($email, $spam)) {
			return false;
		}
	}
	return true;
}

好,然后再找到这些,大概是在 73 行:

if (!$email || !preg_match("/^[-a-zA-Z0-9_\.]+@([0-9A-Za-z][0-9A-Za-z-]+\.)+[A-Za-z]{2,5}$/",$email)) {
	echo 1;
	ajax_footer();
}

后面加上:

		if (!osnaile_isgoodmail($email)) {
			echo 1;
			ajax_footer();
		}

再找到这句:

if (empty($regemail) || !ereg("^[-a-zA-Z0-9_\.]+\@([0-9A-Za-z][0-9A-Za-z-]+\.)+[A-Za-z]{2,5}$",$regemail)) {
	Showmsg('illegal_email');
}

在这后面加上:

	else if (!osnaile_isgoodmail($regemail)) {
		Showmsg('illegal_email');
	}

2010.06.04更新:
在 phpwind 7.5 中已经有邮箱黑名单功能了,只要在后台里设置好黑名单就行了
黑名单列表:

qsseo.com,seoyw.com,chongsoft.org,wormseo.cn,wormseo.com,chongsoft.cn,zyseo.com,seorj.cn,qqneiyi.cn,chongblog.cn,chongblog.com,71mail.com.cn,designhot.net.cn,marketnet.com.cn,newline.net.cn,company-mail.cn,cpok-bdqn.com.cn,cp-bdqnok.com.cn,bdqncpok.com.cn,bdqnok-cp.com.cn,bdqn-hicp.com.cn,wormsoft.cn,chongseo.net,chongseo.cn,chongseo.com,huiseo.cn,csoftmail.cn,xdseo.com,designhot.net.cn,cpok-bdqn.com.cn,bdqncpok.com.cn,bdqnok-cp.com.cn,cp-bdqnok.com.cn,company-mail.cn,delu1.com,delu2.com,delu3.com,delu4.com,delu5.com,delu6.com,delu7.com,delu8.com,newline.net.cn,marketnet.com.cn,hongkong-seo.com,shoesonlineshop.org,siteposter.net