dede登陆后台页面空白,dede注销页面空白的解决方案
每个人与每个人的情况不同,解决方法不同。本例只说明我遇到的情况,不是万能的方法
DEDECMS 5.7 UTF-8
PHP5.4.7版本
修改文件include/userlogin.class.php
搜索function exitUser(),将下面的5行session_unregister替换成2行session_unset();session_destroy();
示例
function exitUser() { ClearMyAddon(); session_unset(); session_destroy(); DropCookie('dedeAdmindir'); DropCookie('DedeUserID'); DropCookie('DedeLoginTime'); $_SESSION = array(); }
搜索function keepUser(),将下面的@session_register……注释掉即可,6处
示例
if($this->userID != '' && $this->userType != '') { global $admincachefile,$adminstyle; if(empty($adminstyle)) $adminstyle = 'dedecms'; //@session_register($this->keepUserIDTag); $_SESSION[$this->keepUserIDTag] = $this->userID; //@session_register($this->keepUserTypeTag); $_SESSION[$this->keepUserTypeTag] = $this->userType; //@session_register($this->keepUserChannelTag); $_SESSION[$this->keepUserChannelTag] = $this->userChannel; //@session_register($this->keepUserNameTag); $_SESSION[$this->keepUserNameTag] = $this->userName; //@session_register($this->keepUserPurviewTag); $_SESSION[$this->keepUserPurviewTag] = $this->userPurview; //@session_register($this->keepAdminStyleTag); $_SESSION[$this->keepAdminStyleTag] = $adminstyle; PutCookie('DedeUserID', $this->userID, 3600 * 24, '/'); PutCookie('DedeLoginTime', time(), 3600 * 24, '/'); $this->ReWriteAdminChannel(); return 1; }
说明,php5.4早就已经抛弃session_register和session_unregister这2个函数了,所以会出错。
session_unset() 不带参数,释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的session id,没有返回值。
session_destroy() 不带参数,删除当前用户对应的session文件以及释放session id,内存中的$_SESSION变量内容依然保留,成功返回true。
session_unregister() 带参数,注销一个指定session变量,成功返回true。
所以,释放用户的session所有资源,需要顺序执行如下代码:
<?php
session_unset();
session_destroy();
?>
php5可以不用声明session就可以使用,所以注销掉session的声明