问题:在discuz论坛的管理过程中,发现很多不存在的邮箱在不停的注册。经查证发现是一些注册机在注册。有什么办法防止吗?
分析:
这些软件进行注册的时候用户名的本人是不会进到论坛来的,但我们在后台设置了问答验证和验证码,在他的注册机里面有获取这些信息的功能。
比如我们设置一个问答:郑州区号是多少?大家都知道是0371,注册机那边获取验证问答的时候,软件管理人员肯定也知道是0371,这种方法没用。
解决办法:
我们需要解决的就是他不到论坛来就无法获取问题与答案。
步骤:
① 后台 进行 验证设置
② register.htm 文件 代码修改
template\default\member 在默认模板文件夹找到member文件夹,里面有个 register.htm 文件,打开
ctrl+f 查找 <!--{if $secqaacheck || $seccodecheck}--> 大概在213行 可以找到。
213—216行代码:
- <!--{if $secqaacheck || $seccodecheck}-->
- <!--{block sectpl}--><div class="rfm"><table><tr><th><span class="rq">*</span><sec>: </th><td><sec><br /><sec></td></tr></table></div><!--{/block}-->
- <!--{subtemplate common/seccheck}-->
- <!--{/if}-->
复制代码 修改为(即把上面代码删了,把下面的复制过去 注意注释部分):
- <!--{if $secqaacheck}--> <!--注意这里if $secqaacheck || $seccodecheck变为if $secqaacheck-->
- <!--{block sectpl}--><div class="rfm"><table><tr><th><span class="rq">*</span><sec>: </th><td><sec><br /><sec></td></tr></table></div><!--{/block}-->
- <!--{subtemplate common/seccheck1}--> <!--注意这里seccheck变为seccheck1-->
- <!--{/if}-->
- <!--{if $seccodecheck}--> <!--注意这里 if $secqaacheck || $seccodecheck变为$seccodecheck-->
- <!--{block sectpl}--><div class="rfm"><table><tr><th><span class="rq">*</span><sec>: </th><td><sec><br /><sec></td></tr></table></div><!--{/block}-->
- <!--{subtemplate common/seccheck2}--> <!--注意这里seccheck变为seccheck2-->
- <!--{/if}-->
复制代码 ③seccheck.htm文件代码修改:
在default\common文件夹下找到seccheck.htm文件,把它复制两份,分别命名seccheck1.htm与seccheck2.htm
原seccheck.htm文件代码:
- {eval
- $sechash = !isset($sechash) ? 'S'.($_G['inajax'] ? 'A' : '').$_G['sid'] : $sechash.random(3);
- $sectpl = str_replace("'", "\'", $sectpl);
- }
- <!--{if $secqaacheck}-->
- <span id="secqaa_q$sechash"></span>
- <script type="text/javascript" reload="1">updatesecqaa('q$sechash', '$sectpl', '{$_G[basescript]}::{CURMODULE}');</script>
- <!--{/if}-->
- <!--{if $seccodecheck}-->
- <span id="seccode_c$sechash"></span>
- <script type="text/javascript" reload="1">updateseccode('c$sechash', '$sectpl', '{$_G[basescript]}::{CURMODULE}');</script>
- <!--{/if}-->
复制代码 修改之后
seccheck1.htm文件代码:
- {eval
- $sechash = !isset($sechash) ? 'S'.($_G['inajax'] ? 'A' : '').$_G['sid'] : $sechash.random(3);
- $sectpl = str_replace("'", "\'", $sectpl);
- }
- <!--{if $secqaacheck}-->
- <span id="secqaa_q$sechash"></span>
- <script type="text/javascript" reload="1">updatesecqaa('q$sechash', '$sectpl', '{$_G[basescript]}::{CURMODULE}');</script>
- <!--{/if}-->
复制代码 seccheck2.htm文件代码:
- {eval
- $sechash = !isset($sechash) ? 'S'.($_G['inajax'] ? 'A' : '').$_G['sid'] : $sechash.random(3);
- $sectpl = str_replace("'", "\'", $sectpl);
- }
- <!--{if $seccodecheck}-->
- <span id="seccode_c$sechash"></span>
- <script type="text/javascript" reload="1">updateseccode('c$sechash', '$sectpl', '{$_G[basescript]}::{CURMODULE}');</script>
- <!--{/if}-->
复制代码 ④在register.htm 文件添加问题(对应discuz后台答案)
<!--{if $secqaacheck}-->部分添加问题:
- <!--{if $secqaacheck}-->
- <!--{block sectpl}--><div class="rfm"><table><tr><th><span class="rq">*</span><sec>: </th><td><sec><br /><sec><br/>
- <label>验证问答处回答:<span style=" color:red;">本网站网址中间部分9个字母?</span></label> <!--手动添加的问题-->
- </td></tr></table></div><!--{/block}-->
- <!--{subtemplate common/seccheck1}-->
- <!--{/if}-->
复制代码
上面注释部分为手动添加的问题,当然可以不定时的更改问题和后台对应问题的答案,这样子就可以有效地预防注册机注册,当然不是100%,这里只是提供一个思路供大家参考
最后效果:
当然,不手动在页面添加问题的效果如下:
可以对比一下
|