DEDECMS后台登录空白解决办法

今天下载了一个新版的dedecmsv5.7安装之后突然发现登录后台发现空白了,我php环境是使用的php5.4系统,经过百度php5.4把@session_register(); 去了,而且dedecmsv5.7还使用这个函数所以就出错了,下面我来分析解决办法。

解决方法:

打开 include/userlogin.class.php 文件,在当前文件搜索keepUser(),然后把这个下面的@session_register();给注释掉就行了!

当然要不影响,可以改成

 代码如下 复制代码
if (!isset($_SESSION[$this->keepUserTypeTag]))

修改完的函数:

 代码如下 复制代码
function keepUser()
{
if($this->userID != ” && $this->userType != ”)
{
global $admincachefile,$adminstyle;
if(empty($adminstyle)) $adminstyle = ‘dedecms’;

if (!isset($_SESSION[$this->keepUserIDTag]))
//@session_register($this->keepUserIDTag);
$_SESSION[$this->keepUserIDTag] = $this->userID;
if (!isset($_SESSION[$this->keepUserTypeTag]))
//@session_register($this->keepUserTypeTag);
$_SESSION[$this->keepUserTypeTag] = $this->userType;
if (!isset($_SESSION[$this->keepUserChannelTag]))
//@session_register($this->keepUserChannelTag);
$_SESSION[$this->keepUserChannelTag] = $this->userChannel;
if (!isset($_SESSION[$this->keepUserNameTag]))
//@session_register($this->keepUserNameTag);
$_SESSION[$this->keepUserNameTag] = $this->userName;
if (!isset($_SESSION[$this->keepUserPurviewTag]))
//@session_register($this->keepUserPurviewTag);
$_SESSION[$this->keepUserPurviewTag] = $this->userPurview;
if (!isset($_SESSION[$this->keepAdminStyleTag]))
//@session_register($this->keepAdminStyleTag);
$_SESSION[$this->keepAdminStyleTag] = $adminstyle;
PutCookie(‘DedeUserID’, $this->userID, 3600 * 24, ‘/’);
PutCookie(‘DedeLoginTime’, time(), 3600 * 24, ‘/’);

$this->ReWriteAdminChannel();

return 1;
}
else
{
return -1;
}

我的问题解决了,但有些朋友并不是因为这个问题导致的。

DedeCMS 5.3/5.5/5.6等版本的UTF版本会经常遇到一个问题,就是后台登录会什么都不显示,空白一片
般这个问题都是由于使用了“记事本”而没有使用专业的文本编辑软件来编辑DedeCMS的文件造成的,一般是由于修改了以下几个文件:

include/common.inc.php
data/common.inc.php
dede/config.php

如果你使用了“记事本”之类的软件修改这些文件,修改后都会在文件中加上BOM,造成程序不能正常运行。

可以使用下面的代码来清除文件中的BOM,解决DEDECMS后台列表和登录空白的问题:

Cs_BomKill.php代码:

 代码如下 复制代码
<?php

//此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除
//By Bob Shen
$basedir=”.”; //修改此行为需要检测的目录,点表示当前目录
$auto=1; //是否自动移除发现的BOM信息。1为是,0为否。

//以下不用改动

if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file!=’.’ && $file!=’..’ && !is_dir($basedir.”/”.$file)) echo “filename: $file “.checkBOM(“$basedir/$file”).” <br>”;
}
closedir($dh);
}

function checkBOM ($filename) {
global $auto;
$contents=file_get_contents($filename);
$charset[1]=substr($contents, 0, 1);
$charset[2]=substr($contents, 1, 1);
$charset[3]=substr($contents, 2, 1);
if (ord($charset[1])==239 && ord($charset[2])==187 && ord($charset[3])==191) {
if ($auto==1) {
$rest=substr($contents, 3);
rewrite ($filename, $rest);
return (“<font color=red>BOM found, automatically removed.</font>”);
} else {
return (“<font color=red>BOM found.</font>”);
}
}
else return (“BOM Not Found.”);
}

function rewrite ($filename, $data) {
$filenum=fopen($filename,”w”);
flock($filenum,LOCK_EX);
fwrite($filenum,$data);
fclose($filenum);
}
//结束
?>

如果上面办法还是无法解决你的问题我们可按下面方法来排查

找到:include/common.inc.php文件,打开,查找程序代码:

 代码如下 复制代码
  //error_reporting(E_ALL);

error_reporting(E_ALL || ~E_NOTICE);

替换为:

error_reporting(E_ALL);

//error_reporting(E_ALL || ~E_NOTICE);

这一步很重要,因为它会告诉你为什么变成空白的提示信息,这样登录后面就会看到错误提示了。

一段奇怪的代码,后面有空再研究

 

没人知道我真正的爱好

很多人以为我喜欢写代码,确实,操控机器的感觉确实有那么一点爽。

但是,对着一大堆枯燥无味的字母,一坐就是近10小时,谁TMD说喜欢,我真佩服了!

其实哥真正喜欢的是影视创作,喜欢写小说以及将其拍摄成电影。

之所以会走上今天这条路线,完全也是我自己当初没想到的。。。

记得当时,非常喜欢FLASH,因为可以通过动画,满足一下自己的导演瘾。

然后,制作好的FLASH,想分享给别人,需要学网页制作(那个时代,没得什么博客之类的东东),于是学了网页制作;

终于放到网上了,大家也都看到了,很多人想评论留言,于是,学了ASP 。。。

后来,发现制作的网页太差,和自己的动画完全不在一个水平,于是又苦学美工,专研PS;

后来发现ASP功能弱,更有一个无良哥们黑了我的网站,删除了所有东西,于是。。。又转入LINUX PHP

……..

后来找工作了,根本没有招flash的,于是只好进入软件公司。。。

逐渐淡忘了自己的兴趣爱好,后来完全是随着用户需求导向走了,神马都做,终于成为了一个操作机器的机器。