今天把电脑上的phpStudy升级到2013版。在登录本地织梦dedecms5.7时,/dede/login.php居然显示空白。由于周五我安装了windows8,因为是电脑问题,等我关掉防火墙配置好电脑服务后,发现还是不行。在百度后终于得到高人的日志指点。

原因很简单,phpstudy2013版是用的php5.4,而dedecms的login.php中使用了一个被php5.4抛弃不用的函数(是不是真的抛弃我不知道,反正原文这么写的)

session_register()

意思就是这说个函数不能用了,想用也用不了。方法很简单,直接注释掉,不用进行注册就可以声明session。

在dedecms目录include/userlogin.class.php中查找

function keepUser()

大概在281行,把keepUser()函数下的 @session_register(); 整段注释掉(删除也可以),结果如下:

function keepUser()
{
if($this->userID != '' && $this->userType != '')
{
global $admincachefile,$adminstyle;
if(emptyempty($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;
}
else
{
return -1;
}
}
另外的解决方法就是在include/userlogin.class.php 中声明一个函数

function session_register()
{
return true;
}

via.http://www.phpstudy.net/a.php/160.html

---------------------------------
dede后台空白或者登录以后空白,点注销以后也是空白的解决方式

最近一段时间一直没有写博文,一直都在找工作,刚找到工作,接手以后第一件事儿就是要做一个dede的移站,都是linux系统,网站转移完毕以后,却发现输入以后地址是空白的,必须在后面加login.php才可以登录,而且点击注销也是空白页。百度了很多也没有找到,现在把方法总结一下,公布给大家。
解决方式一:
原因:include/common.inc.php,data/common.inc.php被修改,保存的时候有BOM头,一般是在utf8的编码下才存在这个问题。
方法:ftp下载下来,然后用notepad++或者dw打开,选择UTF8无BOM头保存试试
解决方式二
原因:这个一般是因为环境是PHP5.4的原因,dede中的session_register被移除了
方法:
找include/userlogin.class.php里面的keepuser()函数,
把@session_register 全部改写, 虽然不知道这个@是什么意思
把@session_register($this->keepUserIDTag); 注释掉,然后改为
if (!isset($_SESSION[$this->keepUserIDTag]))
全部有6个。
如下:
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;
然后就可以登入后台了。找include/userlogin.class.php里面的keepuser()函数,
把@session_register 全部改写, 虽然不知道这个@是什么意思
把@session_register($this->keepUserIDTag); 注释掉,然后改为
if (!isset($_SESSION[$this->keepUserIDTag]))
全部有6个。
如下:
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;
然后就可以登入后台了。

解决方式三:
找到:include/common.inc.php文件,打开,查找程序代码:
//error_reporting(E_ALL);
error_reporting(E_ALL || ~E_NOTICE);
替换为:
error_reporting(E_ALL);
//error_reporting(E_ALL || ~E_NOTICE);
这一步很重要,因为它会告诉你为什么变成空白的提示信息,保存之后再次进入管理后台,这个时候会发现后台会有一句话提示了,原文提示是:
Parse error: parse error in D:\wwwroot\pcpps\Web\data\config.cache.inc.php on line 44 找到之后先把上面的改回来,然后我们从错误提示上来分析。
从中我们可以现在在网站根目录的data\config.cache.inc.php on line 44有问题,然后我就把以前正常时备份过的data\config.cache.inc.php 重新上传全覆盖后问题就解决了.到此排除了dede后台登陆一片空白的问题。
(以上是原文,我的提示情况则不一样,DEDE告诉我是plugins下的run.php文件出错,于是我通过FTP一看,远程服务器上的run.php文件已经没了,于是把本地的run.php文件传上去,问题解决。)

解决方法四:在include/common.inc.php最开始添加ob_start()试试,如果不行的话就看php.ini中是否开启了output_buffering是否为on如果不是则试试改成on试试,记得重启apache(我就是用这种方法解决的)
解决方法五:某些版本的dede中可能会存在此问题,看install中的install_lock.txt是否存在,不存在的话新建试试。

via.http://a3147972.blog.51cto.com/2366547/1272057

最后修改:2014 年 06 月 27 日 07 : 57 PM