在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. 现在无论是否选择自动登录,用户注册成功后都可以自动登录到用户中心。
综上,该问题的根源在于注册成功后并未真正执行登录操作,我们通过手动调用登录方法解决了这个问题,让用户注册后无论是否选择自动登录选项,都可以登录成功。
© 版权声明
本文刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等部门来源于互联网,版权均归原作者所有!本网站提供的内容服务于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
联系信息:邮箱aoxolcom@163.com或见网站底部。
联系信息:邮箱aoxolcom@163.com或见网站底部。
THE END
请登录后发表评论
注册
社交帐号登录