Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

不受新用户注册验证限制的地区和IP功能分析

[复制链接]
dongdong0925 发表于 2011-7-31 13:15:55 | 显示全部楼层 |阅读模式
本帖最后由 dongdong0925 于 2011-7-31 13:15 编辑

当后台开启新用户注册验证后,可以设置不受新用户注册验证限制的地区列表和不受新用户注册验证限制的 IP 列表,如图。


当用户注册的IP或者所在地在这个后台设置的列表中的话,就忽略验证直接注册成功,否则需要进行相应验证。

代码分析:
在source\class\class_member.php文件中,在311行附近找到如下代码
  1. if($this->setting['regverify']) {
  2.                         if($this->setting['areaverifywhite']) {
  3.                                 $location = $whitearea = '';
  4.                                 $location = trim(convertip($_G['clientip'], "./"));
  5.                                 if($location) {
  6.                                         $whitearea = preg_quote(trim($this->setting['areaverifywhite']), '/');
  7.                                         $whitearea = str_replace(array("\\*"), array('.*'), $whitearea);
  8.                                         $whitearea = '.*'.$whitearea.'.*';
  9.                                         $whitearea = '/^('.str_replace(array("\r\n", ' '), array('.*|.*', ''), $whitearea).')$/i';
  10.                                         if(@preg_match($whitearea, $location)) {
  11.                                                 $this->setting['regverify'] = 0;
  12.                                         }
  13.                                 }
  14.                         }

  15.                         if($_G['cache']['ipctrl']['ipverifywhite']) {
  16.                                 foreach(explode("\n", $_G['cache']['ipctrl']['ipverifywhite']) as $ctrlip) {
  17.                                         if(preg_match("/^(".preg_quote(($ctrlip = trim($ctrlip)), '/').")/", $_G['clientip'])) {
  18.                                                 $this->setting['regverify'] = 0;
  19.                                                 break;
  20.                                         }
  21.                                 }
  22.                         }
  23.                 }
复制代码
$this->setting['regverify']为后台设置的新用户注册验证的方式。
0为不需要验证,1为Email 验证,2为人工审核。

不受限制地区分析:
$this->setting['areaverifywhite']为后台设置的不受新用户注册验证限制的地区列表。
  1. $location = trim(convertip($_G['clientip'], "./"));
复制代码
$_G['clientip']为当前用户的IP。
$location为当前访问的IP的所在地。
  1. if($location) {
  2.                                         $whitearea = preg_quote(trim($this->setting['areaverifywhite']), '/');
  3.                                         $whitearea = str_replace(array("\\*"), array('.*'), $whitearea);
  4.                                         $whitearea = '.*'.$whitearea.'.*';
  5.                                         $whitearea = '/^('.str_replace(array("\r\n", ' '), array('.*|.*', ''), $whitearea).')$/i';
  6.                                         if(@preg_match($whitearea, $location)) {
  7.                                                 $this->setting['regverify'] = 0;
  8.                                         }
  9.                                 }
复制代码
$whitearea为后台设置的不受限制地区的匹配数组。
如果存在$location,同时$location可以匹配到$whitearea中任意一项,就将$this->setting['regverify']赋为0(无需进行验证)。


不受限制IP分析:
  1. if($_G['cache']['ipctrl']['ipverifywhite']) {
  2.                                 foreach(explode("\n", $_G['cache']['ipctrl']['ipverifywhite']) as $ctrlip) {
  3.                                         if(preg_match("/^(".preg_quote(($ctrlip = trim($ctrlip)), '/').")/", $_G['clientip'])) {
  4.                                                 $this->setting['regverify'] = 0;
  5.                                                 break;
  6.                                         }
  7.                                 }
  8.                         }
复制代码

$_G['cache']['ipctrl']['ipverifywhite']为后台设置的不受新用户注册验证限制的 IP 列表。
如果后台设置了不受新用户注册验证限制的 IP 列表,同时当前IP可以匹配到后台设置的任意不受限制IP,就将$this->setting['regverify']赋为0(无需进行验证)。



本帖子中包含更多资源

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

x
64243354 发表于 2011-7-31 13:16:57 | 显示全部楼层
{:soso_e179:}支持了 老大{:soso_e129:}
回复

使用道具 举报

联系人 发表于 2011-8-2 00:31:56 | 显示全部楼层
这个不错 谢谢分享 支持
回复

使用道具 举报

当时明月 发表于 2011-8-2 08:50:15 | 显示全部楼层
这个功能真有用么?以前用过一个插件,总是判断出错。
回复

使用道具 举报

0311bb 发表于 2011-8-2 09:13:11 | 显示全部楼层
灰常不错
回复

使用道具 举报

kudzu 发表于 2011-8-2 09:52:07 | 显示全部楼层
回复

使用道具 举报

mxl1983413 发表于 2011-8-2 11:54:09 | 显示全部楼层
不是地方站点,用不着这个。
回复

使用道具 举报

pjq8908 发表于 2011-8-6 10:45:10 | 显示全部楼层
老大不错,可惜我没多少时间来进行网站管理.
回复

使用道具 举报

skyaaron 发表于 2011-8-7 00:22:21 | 显示全部楼层
后台明明设定了注册审核,但还是有部分IP可以直接注册发帖,最近平凡出现这样的问题:

事件回放:前台发现有广告贴,查看发帖人注册资料为当日前一个小时注册,做为网站唯一管理员的我可以确定,一定,以及肯定的说我没审核过新注册的会员,难道我是遇到灵异事件???
回复

使用道具 举报

栤雹尛雨 发表于 2011-8-7 01:15:00 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-4-28 04:25 , Processed in 0.110039 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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