PHPcms 2008 注册选择模型关闭后,注册不能自动登录的问题

PHPcms 2008中,当注册模块选择为“提交后不自动登录”时,用户注册成功后无法自动登录的问题,解决方法如下:

1. 找到注册控制器register.php,查看register()方法。方法中有如下代码:

if ($conf['register_not_auto_login']) {
    ...
} else {
    //自动登录
    $uid = SQL::share('user')->insert($in_data);
    $cuser = new user($uid);
    login($cuser->no_check_pass($in_data['password'])); 
}

当`$conf[‘register_not_auto_login’]`为真时,不执行自动登录代码,这就是问题所在。

2. 我们需要在注册成功后,获取用户ID,然后使用该ID手动执行登录。修改代码为:

$uid = SQL::share('user')->insert($in_data);
if ($conf['register_not_auto_login']) {
    //手动登录
    $cuser = new user($uid);
    login($cuser->no_check_pass($in_data['password']));
} else {
    //自动登录
    login($cuser->no_check_pass($in_data['password']));
}

3. 无论是否选择自动登录,注册成功后都执行手动登录,获取用户对象并调用login()方法完成登录。

4. 登录方法login()定义在core.php中,代码为:

function login($cuser) {
    $_SESSION['user'] = $cuser->vars;
    @header('location:'.URL.'member/'.$_SESSION['user']['urlname']); 
    exit; 
}

它将登录用户信息保存到SESSION,并重定向到用户中心。

5. 现在无论是否选择自动登录,用户注册成功后都可以自动登录到用户中心。

综上,该问题的根源在于注册成功后并未真正执行登录操作,我们通过手动调用登录方法解决了这个问题,让用户注册后无论是否选择自动登录选项,都可以登录成功。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论