Discuz! 官方站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 123954|回复: 174

[DST]新概念防暴力注册:用户自生成注册码注册for5.5[版主安装测试通过]

[复制链接]
发表于 2007-3-21 08:19:00 | 显示全部楼层 |阅读模式
本插件由版主sakurakawaii于07年6月10日19:15分
在Windows XP Discuz!5.5.0标准模版 IE6 Mysql4.1下测试安装无错
本测试仅代表此插件安装无错,不包括今后长期使用中可能出现的问题


3月22日20:10分前安装的请再加入一步步骤第2.6步,对于register.php的更改。
4月12日4点50分前安装的请下载新附件,找到其中的sql.txt重新升级数据库,否则会导致一定数量后新用户无法注册!非常重要!
再次表示歉意。
之后安装的只需要按照安装步骤就可以了。


问题集请看3楼


http://www.discuz.net/thread-468920-1-1.html
这是根据我以上自己的创意所写的插件。目前5.5没有可用的邀请注册插件。而防暴力注册又十分困难,希望这个能给大家带来一点好消息。
但请安装的朋友们注意,本插件并非邀请注册插件,是完全不一样的插件(除了MD5校验部分)
本程序只适合于5.5.0的安装。5.0下有部分文件不同,且风格css样式表部分不同,可能会出现美观问题。装过邀请注册插件的可能会出现2个功能冲突的问题,就不要安装了吧。


插件名称:用户自生成随机码注册程序 For 5.5
插件适应版本:Discuz! 5.5.0
插件作者:sakurakawaii
------------ sakurakawaii 为 Discuz! Helping Team C001成员
sakura插件总编号:0703

原模版改动:有
新增模版:有
数据库增加:1个

全新安装:

1.下载上传附件里Upload内的文件

2.1下载根目录的register.php,打开。查找
  1. require_once DISCUZ_ROOT.'./forumdata/cache/cache_profilefields.php';
复制代码
在下面加入
  1. //用户自领取注册码
  2. $invsettings = getautoregconfig();
  3. //用户自领取注册码
复制代码
2.2查找
  1. showmessage('register_disable');
  2. }
复制代码
在下面加入
  1. //用户自领取注册码
  2. $action=trim($action);
  3. if($action == 'check'){
  4.         
  5. if (!$id) {
  6.         showmessage('请输入注册码!');
  7.                 }
  8.                 else {
  9.                         $id = trim($id);
  10.         $query = $db->query("SELECT * FROM {$tablepre}regcode where regcodes='$id'");
  11. $regcode = $db->fetch_array($query);
  12. if (!$regcode){showmessage('注册码不存在!');}
  13. else {
  14.         if ($regcode[used]==1){
  15.                         showmessage('注册码已被使用!');
  16.                 }
  17. else {
  18. showmessage('注册码可以使用!');
  19. }
  20. }
  21. }
  22. }
  23. //用户自领取注册码
复制代码
2.3查找
  1. $username = trim($username);
复制代码
下面加入
  1. //用户自领取注册码
  2. $id=trim($id);
  3. $query = $db->query("SELECT * FROM {$tablepre}regcode where regcodes='$id' and used=0");
  4. $regcode = $db->fetch_array($query);

  5. if (!$regcode[regcodes]) {
  6.                         showmessage('注册码错误或者已经被使用!');
  7.                 }
  8. //用户自领取注册码
复制代码
2.4查找
  1. $authstr = $regverify == 1 ? "$timestamp\t2\t$idstring" : '';
复制代码
在下面加入
  1. //用户自领取注册码
  2. $db->query("UPDATE {$tablepre}regcode SET usedname='$username',usedtime='$timestamp',used=1 WHERE regcodes='$id'");
  3. //用户自领取注册码
复制代码
2.5查找
  1. ?>
复制代码
上面加入
  1. function getautoregconfig() {
  2.         @include DISCUZ_ROOT.'./forumdata/cache/plugin_autoreg.php';
  3.         return $_DPLUGIN['autoreg'];
  4.         }
复制代码
2.6查找
  1. showmessage('register_succeed', dreferer());
复制代码
替换为
  1. showmessage('register_succeed', 'index.php');
复制代码
2.7 register.php上传至原目录。

3.1打开templates/default/register.htm。查找
  1. <tr>
  2. <td class="altbg1" width="21%"><span class="bold">{lang username}</span></td>
  3. <td class="altbg2"><div class="input"><input type="text" name="username" size="25" maxlength="15" id="username" onBlur="checkusername()"></div><div id="checkusername"></div>
  4. </td>
  5. </tr>
复制代码
上面加入
  1. <tr>
  2.                 <td class="altbg1"><span class="bold">注册码:</span></td>
  3.                 <td class="altbg2"><input type="text" name="id" size="25" maxlength="25">        <input type="button" value="检验注册码" onclick="window.open('register.php?action=check&id='+this.form.id.value);">       (校验刚才的注册码并贴入输入框)</td>
  4.         </tr>
复制代码
3.2 register.htm传到原目录。

4.1打开templates/default/header.htm。如果你有多个风格都需更改。
查找
  1. <a href="$link_register">{lang register}</a>
复制代码
替换为
  1. <a href="plugin.php?identifier=autoreg&module=autoreg">{lang register}</a>
复制代码
4.2查找并删除(注意!!!!以下剔除了插件横板排列的代码,请将自己的前台调用插件移入下拉菜单或手动添加链接)
  1. <!--{if !empty($plugins['links'])}-->
  2.         <!--{loop $plugins['links'] $module}-->
  3.                     <!--{if !$module['adminid'] || ($module['adminid'] && $adminid > 0 && $module['adminid'] >= $adminid)}-->| $module[url] <!--{/if}-->
  4.         <!--{/loop}-->
  5. <!--{/if}-->
复制代码
4.3 header传到原目录。

5.打开sql.txt,复制粘贴至后台升级数据库。

6.打开discuz_plugin_autoreg.txt,复制粘贴至后台导入插件。

7.完工。插件后台处请不要随意配置。尤其不能选择包含运行。

[ 本帖最后由 伊泽浩 于 2007-6-21 00:11 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

4

查看全部评分

 楼主| 发表于 2007-3-21 08:20:24 | 显示全部楼层
程序说明与防止暴力注册的原理:
本程序根据我自己的创意制作完成。(原贴:http://www.discuz.net/thread-468920-1-1.html )
本程序可以绝对有效的防止任何机器人的注册。

新型机器人常用破解方法:机器人会由有人工采集一次信息的功能,即你加入一项必填验证项,机器人不会知道答案是什么,但是新机器人添加了此项功能后,可以由人工导入,等于告诉了机器人这个的答案。本程序注册码为随机MD5生成,决不雷同,没有唯一答案,所以不存在采集信息后,机器人能不停注册的情况。

特点:
1.更改注册页导向。
2.注册码新开页面复制。
3.注册码需手动复制粘贴。

下一版本会加入cookies支持。具体支持内容暂不说明,否则容易暴露目的。

[ 本帖最后由 sakurakawaii 于 2007-3-21 20:24 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2007-3-21 08:20:41 | 显示全部楼层
问题集

1.我本来用着很好,过段时间出现类似如下的错误
Discuz! info: MySQL Query Error

Time: 2007-4-12 12:58pm
Script: /plugin.php

SQL: INSERT INTO [Table]regcode (userid,buyname,buytime,regcodes) VALUES ('0','','1176353924','gsC1xpHhIfbOjT105S')
Error: Duplicate entry '255' for key 1
Errno.: 1062

Similar error report has beed dispatched to administrator before.

答:方法一:会使用phpmyadmin的请找到regcode表,regcodeid也就是第一个项的类型改为bigint。
       方法二:请下载顶楼附件,找到sql.txt重新升级即可。(新手推荐方法)

[ 本帖最后由 sakurakawaii 于 2007-4-12 17:06 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2007-3-21 08:21:03 | 显示全部楼层
占楼更新。。。。。。。。。
回复

使用道具 举报

发表于 2007-3-21 08:23:10 | 显示全部楼层
:o :o :o
回复

使用道具 举报

发表于 2007-3-21 08:51:46 | 显示全部楼层
:)   不错战位
回复

使用道具 举报

发表于 2007-3-21 08:57:08 | 显示全部楼层
有什么用????
回复

使用道具 举报

 楼主| 发表于 2007-3-21 09:02:58 | 显示全部楼层
用途就是自己可以领取注册码来注册,而不是别人的,你可以看我1楼的那个帖子链接。
回复

使用道具 举报

发表于 2007-3-21 09:09:29 | 显示全部楼层
....................
回复

使用道具 举报

 楼主| 发表于 2007-3-21 09:12:17 | 显示全部楼层
不可能再有机器人突破这种了。。。
这不是加个选项什么的之类的,远远的安全
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|Comsenz ( 粤B2-20090059-165 )star

GMT+8, 2019-10-22 07:24

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表