换用 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 & amp; $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