这个功能虽然也是验证码,不过比起以前的传统验证码功能强大了很多。先说说它的特点~希望大家能喜欢.
特点:
1、支持数字、英文、中文等等的字符混合组成验证码,只要你的数据库支持这些字符什么都可以做到。避免了纯数字纯英文纯中文带来的弊端。
2、每一个注册会员除了要输入自己应该输入的验证码,还要同时给下一个想注册的人设置。可以做到更强大的随机性,因为程序验证码是有固定算法的,但是如果让人去指定验证码,那样会增加破解的难度。可以更强的防止机器人注册。
3、带有后台控制开关和初始验证码设置,想用就用。
说明:
1、更新验证码时候会有缓存更新,可能会出现提示。只要刷新即可,管理员需要在注册协议中说明该点。
2、原始验证码和设置验证码不能一致。
3、请注意你的数据库版本,中文功能仅仅只能用在GBK字符集的数据库上。否则会乱码
升级数据库(我初始设置的是1234):
- INSERT INTO `cdb_settings` (`variable`, `value`) VALUES ('setcode1', '1234');
- INSERT INTO `cdb_settings` (`variable`, `value`) VALUES ('setcode2', '0');
复制代码
打开admincp.lang.php
找到:
- 'settings_regstatus_comment' => '选择“否”将禁止游客注册成为会员,但不影响过去已注册的会员的使用',
复制代码
在下面加:
- 'settings_code1' =>'设置初始验证码',
- 'settings_code1_comment' =>'设置给第一个注册会员的验证码,一经设置请不要随便修改,避免意外错误',
- 'settings_code2' =>'启用指定验证码',
- 'settings_code2_comment' =>'启用指定验证码功能,启用该功能后,每一位注册的会员都需要为下一个人设置验证码,能有效加强防止机器人在论坛注册',
复制代码
打开admin\settings.inc.php:
找到:
- showsetting('settings_regstatus', 'settingsnew[regstatus]', $settings['regstatus'], 'radio');
复制代码
在下面加上:
- showsetting('settings_code2', 'settingsnew[setcode2]', $settings['setcode2'], 'radio');
- showsetting('settings_code1', 'settingsnew[setcode1]', $settings['setcode1'], 'text');
复制代码
找到:
- $checkfastpost = array($settings['fastpost'] => 'checked');
复制代码
在后面加上:
- $checksetcode2 = array($settings['setcode2'] => 'checked');
复制代码
打开register.htm
找到:
- <tr>
- <td class="altbg1" width="21%">{lang username}:</td>
- <td class="altbg2"><input type="text" name="username" size="25" maxlength="25">
- <input type="button" value="{lang register_check_username}" onclick="window.open('member.php?action=check&username='+this.form.username.value);">
- </td>
- </tr>
复制代码
在上面加:
- <!--{if $setcode2 == 1}-->
- <tr>
- <td class="altbg1" width="21%">输入验证码:</td>
- <td class="altbg2"><input type="text" name="inputcode1" size="20" maxlength="50"><span class="smalltxt"> 请先更新验证码,然后输入后面括号里的红色验证字符 (<font color="#ff0000">$setcode1</font>)</span><input type="button" value="更新验证码" onclick="window.open('member.php?action=updatecode');"></td>
- </tr>
- <tr>
- <td class="altbg1" width="21%">设置验证码:</td>
- <td class="altbg2"><input type="text" name="inputcode2" size="20" maxlength="50"><span class="smalltxt"> 请你为下一个注册的人设置验证码,可以是数字、文字、字母等等结合(不超过50字节)</span></td>
- </tr>
- <!--{/if}-->
复制代码
打开register.php
找到:
- if(strlen($username) > 15) {
- showmessage('profile_username_toolang');
- }
复制代码
在上面加:
- if($setcode2 == 1) {
- if($inputcode1 != $setcode1){
- showmessage('对不起,验证码输入错误或为空,请返回修改');
- }
- if($inputcode2 == '' || $inputcode1 == $inputcode2){
- showmessage('你设置的验证码为空或与上次的验证码相同,请返回修改');
- }
- }
复制代码
找到:
- $authstr = $regverify == 1 ? "$timestamp\t2\t$idstring" : '';
复制代码
在下面加:
- if($setcode2 == 1) {
- $db->query("UPDATE {$tablepre}settings SET `value` = '$inputcode2' WHERE CONVERT( `variable` USING utf8 ) = 'setcode1' LIMIT 1");
- }
复制代码
打开member.php
找到:
- elseif($action == 'markread') {
复制代码
在前面加:
- elseif($action == 'updatecode') {
- @unlink(DISCUZ_ROOT.'./forumdata/cache/cache_settings.php');
- showmessage('验证码更新读取完毕,请返回刚才的页面。','register.php');
- }
复制代码
[ 本帖最后由 sw08 于 2006-5-13 11:49 编辑 ] |