论坛未验证会员,禁止访问会员,禁止发言会员,往往会登陆到家园继续灌水,对网站的管理引起不少麻烦。目前uchome和discuz论坛之间关于会员组,还没有给出一定的方案,官方的方向,目前是uchome是独立的,希望官方会从ucenter着手,或者另外想出一个更好的办法解决这个问题。
我的解决方案很简单,水平不高,高手莫笑!
分为两步走:
第一步:
禁止论坛的某些会员组登陆家园,不登陆就没法灌水了。
在家园的source/function_common.php 修改getpassport函数,在第1266行- $passport['email'] = $ucresult[3];
复制代码 下面增加-
- //获取用户在论坛的用户组情况。
- $group_arr = array('4', '5', '6', '8', '9');//论坛中不希望登陆家园的会员组ID
- $dbhost1 = 'localhost'; // 数据库服务器
- $dbuser1 = '**'; // 数据库用户名
- $dbpw1 = '**'; // 数据库密码
- $dbname1 = '****'; // 数据库名
- $server_link1=@mysql_connect($dbhost1,$dbuser1,$dbpw1) or die ("连接服务器失败");
- $db_link1=@mysql_select_db($dbname1,$server_link1) or die ("连接数据库失败");
- $user_array=mysql_fetch_array(mysql_query("SELECT groupid FROM cdb_members WHERE uid='".$passport['uid']."'"));
- $user_group=$user_array['groupid'];
- if(in_array($user_group,$group_arr)){
- die("您在论坛中的用户组被禁止激活家园,如有疑问,请到论坛进行咨询!");
- exit();
- }
- //结束
复制代码 这样以来,论坛被禁止登陆家园的会员组是无法登陆家园进行灌水的。但是如果家园整合了其他应用程序,仍然是可以通过同步登陆来登录家园的。因此我们还要修改第二步,禁止这些会员组的会员通过同步登陆来登录到uchome。
第二步:
修改api/uc.php,修改同步登陆函数synlogin。在226行- $space = insertsession($member);
复制代码 下面增加-
- //获取用户在论坛的用户组情况。
- $group_arr = array('4', '5', '6', '8', '9');//论坛中不希望登陆家园的会员组ID
- $dbhost1 = 'localhost'; // 数据库服务器
- $dbuser1 = '**'; // 数据库用户名
- $dbpw1 = '**'; // 数据库密码
- $dbname1 = '****'; // 数据库名
- $server_link1=@mysql_connect($dbhost1,$dbuser1,$dbpw1) or die ("连接服务器失败");
- $db_link1=@mysql_select_db($dbname1,$server_link1) or die ("连接数据库失败");
- $user_array=mysql_fetch_array(mysql_query("SELECT groupid FROM cdb_members WHERE uid='".$passport['uid']."'"));
- $user_group=$user_array['groupid'];
- if(in_array($user_group,$group_arr)){
- die("您在论坛中的用户组被禁止激活家园,如有疑问,请到论坛进行咨询!");
- exit();
- }
- //结束
复制代码 方法有点笨,不过蛮有效的,对那些禁止发言,禁止访问,禁止IP,未验证会员,这样他们就没法到uchome中灌水。
为以防万一,请注意备份程序。 |