2012-03-06 46 views
0

我正嘗試在我的codeigniter頁面上應用此小代碼,以查看登錄是否將取代註銷(如果用戶已登錄),反之亦然。我在codeigniter框架附帶的歡迎頁面上測試了它,但沒有發生任何事情。我看到的唯一的薄點是login鏈接。我嘗試使用坦克身份驗證作爲登錄庫來使事情變得簡單,但是每當我登錄到歡迎頁面時,登錄鏈接又一次出現,這是沒有意義的。登錄以取代codeiginter中的登出代碼

這裏是我用來代替登錄/退出

<?php if(isset($_SESSION['username']) && $_SESSION['username']!="") 

{ echo("<a href='logout.php'>Logout</a> ");

echo($_SESSION['username']); ``// displays username } else { echo("<a href='login.php'>Login</a> "); } ?>

+1

笨不使用PHP本地會話。如果你正在使用Tank Auth,使用'$ this-> tank_auth-> is_logged_in()',否則使用Session類。 – 2012-03-06 18:03:40

+0

@Madmartigan感謝您的好評。好的,我是新來的CI,不知道在哪裏使用你提供給我的代碼......任何想法?應該在控制器中? – 2012-03-06 18:22:41

+1

它應該代替你有'isset($ _ SESSION ['username'])&& $ _SESSION ['username']!=「」' – 2012-03-06 18:25:37

回答

1

也許你的登錄腳本沒有正確設置了$ _SESSION的代碼。使用Firebug查看您是否有活動會話。我還用一種方法來檢查是否用戶登錄:

您的登錄類:

public function is_logged_in() 
{ 
    if($this->session->userdata('username')) 
    { 
     return true; 
    } 
} 

您的看法:

if($this->login->is_logged_in()) 
{ 
    echo anchor('logout','Logout'); 
} 
else 
{ 
    echo anchor('login','Login'); 
} 
+1

@Digitalsite:這是* example *代碼來幫助你理解你的問題,你必須自己寫代碼!請閱讀用戶指南中的此條目:http://codeigniter.com/user_guide/libraries/sessions.html – 2012-03-06 18:04:33

+1

您需要首先實例化您的登錄模型。因此,無論是在視圖的控制器還是視圖本身,都可以使用:'$ this-> load-> model('login');'。如果你不知道如何創建模型,除了建議你閱讀更多關於[MVC結構的工作原理](http://codeigniter.com/user_guide/overview/mvc.html)的信息,我只是將函數我提到了你的控制器。它將直接在您的視圖中訪問。 – hohner 2012-03-06 18:05:13

+0

@Jamie非常感謝您付出的巨大努力。我現在會檢查一下,看看我能做些什麼。我一直試圖解決這個問題連續2天沒有睡眠,因爲我必須儘快完成它。再次感謝 – 2012-03-06 18:16:56