问题背景:
phpcms前台退出登录的时候,提示了一个退出成功0
让我很困惑为啥有个0呢?
问题分析:
进入
./phpcms/modules/member/index.php
找到logout方法,代码如下:
public function logout() {
$setting = pc_base::load_config('system');
//snda退出
if($setting['snda_enable'] && param::get_cookie('_from')=='snda') {
param::set_cookie('_from', '');
$forward = isset($_GET['forward']) && trim($_GET['forward']) ? urlencode($_GET['forward']) : '';
$logouturl = 'https://cas.sdo.com/cas/logout?url='.urlencode(APP_PATH.'index.php?m=member&c=index&a=logout&forward='.$forward);
header('Location: '.$logouturl);
} else {
$synlogoutstr = ''; //同步退出js代码
if(pc_base::load_config('system', 'phpsso')) {
$this->_init_phpsso();
$synlogoutstr = $this->client->ps_member_synlogout();
} param::set_cookie('auth', '');
param::set_cookie('_userid', '');
param::set_cookie('_username', '');
param::set_cookie('_groupid', '');
param::set_cookie('_nickname', '');
param::set_cookie('cookietime', '');
$forward = isset($_GET['forward']) && trim($_GET['forward']) ? $_GET['forward'] : 'index.php?m=member&c=index&a=login';
showmessage(L('logout_success').$synlogoutstr, $forward);//退出成功0
}
}
问题解决:
注意最后一行的showmessage,里面第一个参数是
L('logout_success').$synlogoutstr
代表消息内容,查了一下
./languages/zh-cn/member.lang.php
中logout_success确实是退出成功四个字,但这后面拼了一个$synlogoutstr,经检验者确实是那个0,如果不想让他在退出成功的时候显示,把这个字符串去掉就可以了。
上面代码中显示的该字符串是同步退出js用的,所以应该是一个状态码,可能对开发者比较有用吧~mark一下就好