首页 > CMS > 织梦DEDE > 正文

DEDECMS后台登录空白解决办法

2024-07-12 08:41:37
字体:
来源:转载
供稿:网友

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

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

当然要不影响,可以改成,代码如下:

if (!isset($_SESSION[$this->keepUserTypeTag]))

修改完的函数,代码如下:

  1. function keepUser() 
  2.     { 
  3.         if($this->userID != '' && $this->userType != ''
  4.         { 
  5.             global $admincachefile,$adminstyle
  6.             if(emptyempty($adminstyle)) $adminstyle = 'dedecms'
  7.    if (!isset($_SESSION[$this->keepUserIDTag])) 
  8.    //@session_register($this->keepUserIDTag);     
  9.    $_SESSION[$this->keepUserIDTag] = $this->userID; 
  10.    if (!isset($_SESSION[$this->keepUserTypeTag])) 
  11.    //@session_register($this->keepUserTypeTag); 
  12.    $_SESSION[$this->keepUserTypeTag] = $this->userType; 
  13.    if (!isset($_SESSION[$this->keepUserChannelTag])) 
  14.    //@session_register($this->keepUserChannelTag); 
  15.    $_SESSION[$this->keepUserChannelTag] = $this->userChannel; 
  16.    if (!isset($_SESSION[$this->keepUserNameTag])) 
  17.    //@session_register($this->keepUserNameTag); 
  18.    $_SESSION[$this->keepUserNameTag] = $this->userName; 
  19.    if (!isset($_SESSION[$this->keepUserPurviewTag])) 
  20.    //@session_register($this->keepUserPurviewTag); 
  21.    $_SESSION[$this->keepUserPurviewTag] = $this->userPurview; 
  22.    if (!isset($_SESSION[$this->keepAdminStyleTag])) 
  23.    //@session_register($this->keepAdminStyleTag); 
  24.    $_SESSION[$this->keepAdminStyleTag] = $adminstyle
  25.             PutCookie('DedeUserID'$this->userID, 3600 * 24, '/'); 
  26.             PutCookie('DedeLoginTime', time(), 3600 * 24, '/'); 
  27.              
  28.             $this->ReWriteAdminChannel(); 
  29.              
  30.             return 1; 
  31.    else 
  32.      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代码:

  1. //此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除 
  2. //By Bob Shen 
  3. $basedir="."//修改此行为需要检测的目录,点表示当前目录 
  4. $auto=1; //是否自动移除发现的BOM信息。1为是,0为否。 
  5. //以下不用改动 
  6. if ($dh = opendir($basedir)) { 
  7.        while (($file = readdir($dh)) !== false) { 
  8.        if ($file!='.' && $file!='..' && !is_dir($basedir."/".$file)) echo "filename: $file ".checkBOM("$basedir/$file").
    "
  9.        } 
  10.        closedir($dh); 
  11. function checkBOM ($filename) { 
  12.        global $auto
  13.        $contents=file_get_contents($filename); 
  14.        $charset[1]=substr($contents, 0, 1);  
  15.        $charset[2]=substr($contents, 1, 1);  
  16.        $charset[3]=substr($contents, 2, 1);  
  17.        if (ord($charset[1])==239 && ord($charset[2])==187 && ord($charset[3])==191) { 
  18.             if ($auto==1) { 
  19.                   $rest=substr($contents, 3); 
  20.                   rewrite ($filename$rest); 
  21.                   return ("BOM found, automatically removed."); 
  22.             } else { 
  23.                   return ("BOM found."); 
  24.             } 
  25.         }  
  26.          else return ("BOM Not Found."); 
  27. function rewrite ($filename$data) { 
  28.         $filenum=fopen($filename,"w"); 
  29.         flock($filenum,LOCK_EX); 
  30.         fwrite($filenum,$data); 
  31.         fclose($filenum); 
  32. //结束 
  33. ?> 

如果上面办法还是无法解决你的问题我们可按下面方法来排查,找到:include/common.inc.php文件,打开,查找程序代码:

  1. //error_reporting(E_ALL); 
  2. error_reporting(E_ALL || ~E_NOTICE); 
  3. 替换为: 
  4. error_reporting(E_ALL); 
  5. //error_reporting(E_ALL || ~E_NOTICE); 

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表