5.4php不支援dede的解決方案

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   io   ar   strong   art   

想試試織夢的產品,下載了DedeCMS V5.7版本,在本地部署後,正確登入背景情況下頁面沒有任何輸出和顯示(錯誤登入或密碼錯誤時才有顯示),也沒有報錯。進到指令碼調試,發現問題出在登入頁login.php中以下部分。

login.php

 

[php] view plaincopy
  1. ...  
  2. $cuserLogin = new userLogin($admindir);  
  3.         if(!empty($userid) && !empty($pwd))  
  4.         {  
  5.             $res = $cuserLogin->checkUser($userid,$pwd);  
  6.             //success  
  7.             if($res==1)  
  8.             {  
  9.                 $cuserLogin->keepUser();//此處以下無輸出  
  10.                 if(!empty($gotopage))  
  11.                 {  
  12.                     ShowMsg(‘成功登入,正在轉向管理管理首頁!‘,$gotopage);  
  13.                     exit();  
  14.                 }  
  15.                 else  
  16.                 {  
  17.                     ShowMsg(‘成功登入,正在轉向管理管理首頁!‘,"index.php");  
  18.                     exit();  
  19.                 }  
  20.                 echo "ok";  
  21.             }  
  22. ...  


 

到封裝userLogin類所在的指令碼userlogin.class.php中查看(路徑./include/),所用的keepUser()方法代碼如下:

userlogin.class.php

 

[php] view plaincopy
  1. ...  
  2. function keepUser()  
  3. {  
  4.     if($this->userID != ‘‘ && $this->userType != ‘‘)  
  5.     {  
  6.         global $admincachefile,$adminstyle;  
  7.         if(empty($adminstyle)) $adminstyle = ‘dedecms‘;  
  8.   
  9.         @session_register($this->keepUserIDTag);  
  10.         $_SESSION[$this->keepUserIDTag] = $this->userID;  
  11.   
  12.         @session_register($this->keepUserTypeTag);  
  13.         $_SESSION[$this->keepUserTypeTag] = $this->userType;  
  14.   
  15.         @session_register($this->keepUserChannelTag);  
  16.         $_SESSION[$this->keepUserChannelTag] = $this->userChannel;  
  17.   
  18.         @session_register($this->keepUserNameTag);  
  19.         $_SESSION[$this->keepUserNameTag] = $this->userName;  
  20.   
  21.         @session_register($this->keepUserPurviewTag);  
  22.         $_SESSION[$this->keepUserPurviewTag] = $this->userPurview;  
  23.   
  24.         @session_register($this->keepAdminStyleTag);  
  25.         $_SESSION[$this->keepAdminStyleTag] = $adminstyle;  
  26.   
  27.         PutCookie(‘DedeUserID‘, $this->userID, 3600 * 24, ‘/‘);  
  28.         PutCookie(‘DedeLoginTime‘, time(), 3600 * 24, ‘/‘);  
  29.   
  30.         $this->ReWriteAdminChannel();  
  31.   
  32.         return 1;  
  33.     }  
  34.     else  
  35.     {  
  36.         return -1;  
  37.     }  
  38. }  

 

 

把@去掉,session_register()報出錯誤:
     Call to undefined function session_register()
證實了問題來源於此。查手冊的描述如下:
"版本:(PHP 4, PHP 5 < 5.4.0)"
"本函數已自 PHP 5.3.0 起廢棄並將自 PHP 5.4.0 起移除。"

查看手冊

session_register()在PHP5.4後來的版本中已經多餘,可以省去而直接用$_SESSION[‘abc‘] ="" ;

 

查看Stack Overflow關於此方法的問題。

 

解決方案:去掉或注釋掉所有的session_register(),改用直接存$_SESSION數組。

keepUser()部分

 

[php] view plaincopy
  1. ...  
  2. //session_register($this->keepUserIDTag);  
  3. $_SESSION[$this->keepUserIDTag] = $this->userID;  
  4.   
  5. //session_register($this->keepUserTypeTag);  
  6. $_SESSION[$this->keepUserTypeTag] = $this->userType;  
  7.   
  8. //session_register($this->keepUserChannelTag);  
  9. $_SESSION[$this->keepUserChannelTag] = $this->userChannel;  
  10.   
  11. //session_register($this->keepUserNameTag);  
  12. $_SESSION[$this->keepUserNameTag] = $this->userName;  
  13.   
  14. //session_register($this->keepUserPurviewTag);  
  15. $_SESSION[$this->keepUserPurviewTag] = $this->userPurview;  
  16.   
  17. //session_register($this->keepAdminStyleTag);  
  18. $_SESSION[$this->keepAdminStyleTag] = $adminstyle;  
  19. ...  



 

修改後就正常顯示了。

我是從織夢首頁上下載的"最新"版本,很奇怪難道沒有人遇到同樣的問題嗎。這種問題既然這裡能出現,別的部分就無法保證不會有更多這樣的隱患存在了。

5.4php不支援dede的解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.