111
如果xiunobbs设置为仅会员可读写,那么所有页面都会先验证是否登录。
但是有些页面是非会员也需要访问的,比如登录注册。原程序对这些页面有作例外处理。但是如果你有用验证码插件,会发现验证码不出来。就是因为这里没有对验证码作例外处理。除此之外,我还发现重置密码的邮箱验证也不能使用。
下面我对/model/misc.func.php文件进行了修改,增加了验证码(vcode)和联系我们页面,以及用户send_code页面到例外清单中。这样在仅会员可读写的状态下或者其他封闭状态下,验证码功能和发邮件重置密码功能就可以使用了。
你如果遇到类似的问题,也可以用这个方法解决。
// 检测站点的运行级别
function check_runlevel() {
global $conf, $method, $gid;
// hook model_check_runlevel_start.php
if($gid == 1) return;
$param0 = param(0);
$param1 = param(1);
if($param0 == 'vcode') return;
if($param0 == 'contact_us') return;
if($param0 == 'user' && in_array($param1, array('login', 'create', 'logout', 'sendinitpw', 'resetpw', 'resetpw_sendcode', 'resetpw_complete','send_code', 'synlogin'))) return;
switch ($conf['runlevel']) {
case 0: message(-1, $conf['runlevel_reason']); break;
case 1: message(-1, lang('runlevel_reson_1')); break;
case 2: ($gid == 0 || $method != 'GET') AND message(-1, lang('runlevel_reson_2')); break;
case 3: $gid == 0 AND http_location(url('user-login')); break;
case 4: $method != 'GET' AND message(-1, lang('runlevel_reson_4')); break;
//case 5: break;
}
// hook model_check_runlevel_end.php
}