thinkphp的項目,碰到了一個怪事,
本地環境下點擊登入後,順利進入後台;
虛擬空間的網站,點擊登入後,無法進入後台,沒有報錯,閃了一下仍停留在登入框;
跟蹤了一下,同樣是執行了以下語句:
$this->display('login');
本地:接著就執行這個函數:
public function login() {
但是在虛擬空間調試,就沒有執行以上函數。同樣的資料庫、代碼,為什麼會這樣呢?請指教!
回複討論(解決方案)
恐怕不是這個login的事情呢,再上下文看看
你後台那裡是不是有判斷session的代碼啊? 把那個去掉之後看看能不能進去
再一個你點擊登入之後 頁面跳轉代碼是什嗎?
public function index() { if (!empty($_SESSION[C('SESSION_ADMIN_NAME')]) && !empty($_SESSION[C('SESSION_ADMIN_ID')]) && strtolower(ACTION_NAME) != 'logout') { $this->redirect("Index/index"); } $this->display('login'); } /** * 登入判斷 */ public function login() {
我跟蹤到!empty($_SESSION[C('SESSION_ADMIN_NAME')])是true, !empty($_SESSION[C('SESSION_ADMIN_ID')])也是true,結果本地、虛擬空間都有執行到語句:
$this->display('login');
說錯了,應該是!empty($_SESSION[C('SESSION_ADMIN_NAME')])是false, !empty($_SESSION[C('SESSION_ADMIN_ID')])也是false,就是兩個SESSION都是空的
去掉!empty($_SESSION[C('SESSION_ADMIN_NAME')]) && !empty($_SESSION[C('SESSION_ADMIN_ID')]) && 語句後,
剩下:
if (strtolower(ACTION_NAME) != 'logout') { $this->redirect("Index/index"); }... ...
登入頁面重新整理後出現:頁面無法載入,此網頁包含重新導向迴圈
再一個你點擊登入之後 頁面跳轉代碼是什嗎?
謝謝回複,點擊登入之後 頁面跳轉到 http://.../Login/login.htm
然後馬上又跳轉到http://.../Home/Login/index.htm (登入頁面)
更正一下,點擊登入之後 頁面是先跳轉到 http://.../Login/login.htm
然後馬上自動跳轉到 http://.../Index/index.htm
最後又馬上自動跳轉到http://.../Home/Login/index.htm (登入頁面)
$this->display('main'); } public function main() { $this->display('center'); }
這個 $this->display('center'); ... ...
\manager\Lib\Action\Home\LoginAction.class.php
public function logout() { session_destroy(); //cjq add $fp = fopen('./qerr1f.txt','w+'); fwrite($fp,"ok"); fclose($fp); $this->redirect('Login/index'); }
跟蹤到這段代碼了,確實執行到了 $this->redirect('Login/index');
但不知為何本地測試時,也執行到這句代碼,卻沒有跳轉到登入頁面?
清空 Runtime 目錄後再試
如果
public function logout() {
會被執行到,顯然是你弄錯了 url
logout 是登出!
清空 Runtime 目錄後再試
如果
public function logout() {
會被執行到,顯然是你弄錯了 url
logout 是登出!
多謝!我也不知道為什麼logout()會被執行到,三個RUNTIME目錄都清空了,還是一樣。
我搜尋整站代碼,只搜到四段調用logout()的代碼,都與登入無關。
是哪裡的URL搞錯了呢?被這個問題搞暈了!
清空 Runtime 目錄後再試
如果
public function logout() {
會被執行到,顯然是你弄錯了 url
logout 是登出!
多謝!我也不知道為什麼logout()會被調用到,三個runtime目錄都清空了,還是一樣。
什麼地方的url弄錯了呢?我被這個問題搞暈了!
請在虛擬機器上開一個測試頁面:
不斷重新整理該測試頁面看看有沒有輸出時間,同時查看時間是不是在變。
如果時間不斷變化,你的伺服器沒有配置好session
請在虛擬機器上開一個測試頁面:
不斷重新整理該測試頁面看看有沒有輸出時間,同時查看時間是不是在變。
如果時間不斷變化,你的伺服器沒有配置好session
謝謝回複,重新整理後時間一直沒變化。
看看兩個環境下的輸出有什麼區別,你這樣順藤摸瓜總能出來的
看看兩個環境下的輸出有什麼區別,你這樣順藤摸瓜總能出來的
兩個環境下都輸出NULL,真搞不懂為什麼就。。。?