想試試織夢的產(chǎn)品,下載了DedeCMS V5.7版本,在本地部署后,正確登錄后臺(tái)的情況下頁面沒有任何輸出和顯示(錯(cuò)誤登錄或密碼錯(cuò)誤時(shí)才有顯示),也沒有報(bào)錯(cuò)。進(jìn)到腳本調(diào)試,發(fā)現(xiàn)問題出在登錄頁login.php中以下部分。
login.php
...$cuserLogin = new userLogin($admindir);
if(!empty($userid) && !empty($pwd))
{
$res = $cuserLogin->checkUser($userid,$pwd);
//success
if($res==1)
{
$cuserLogin->keepUser();//此處以下無輸出
if(!empty($gotopage))
{
ShowMsg('成功登錄,正在轉(zhuǎn)向管理管理主頁!',$gotopage);
exit();
}
else
{
ShowMsg('成功登錄,正在轉(zhuǎn)向管理管理主頁!',"index.php");
exit();
}
echo "ok";
}
...
到封裝userLogin類所在的腳本userlogin.class.php中查看(路徑./include/),所用的keepUser()方法
userlogin.class.php
...
function keepUser()
{
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;
}
else
{
return -1;
}
}
把@去掉,session_register()報(bào)出錯(cuò)誤:
Call to undefined function session_register()
證實(shí)了問題來源于此。查手冊的描述如下:
"版本:(PHP 4, PHP 5 < 5.4.0)"
"本函數(shù)已自 PHP 5.3.0 起廢棄并將自 PHP 5.4.0 起移除。"
查看手冊
session_register()在PHP5.4后來的版本中已經(jīng)多余,可以省去而直接用$_SESSION['abc'] ="" ;
查看Stack Overflow關(guān)于此方法的問題。
解決方法:去掉或注釋掉所有的session_register(),改用直接存$_SESSION數(shù)組。
keepUser()部分
...
//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;
...
修改后就正常顯示了。
我是從織夢主頁上下載的"最新"版本,很奇怪難道沒有人遇到同樣的問題嗎。這種問題既然這里能出現(xiàn),別的部分就無法保證不會(huì)有更多這樣的隱患存在了。