我試圖爲構建在CodeIgniter上的網站創建通用頭,並且我無法找出將切換「登錄」鏈接的代碼。用戶名(帶有鏈接到個人資料頁)在用戶登錄後如何用CodeIgniter中的用戶名替換「登錄」按鈕
在控制器的功能,我試過下面的代碼:
if(!$this->session->userdata($userSessionVar))
{
$data['header_output'] = "<li><a href='" . base_url() . "index.php/main/login'>Login</a></li>";
} else
{
$data['header_output'] = $this->session->data('userFirstName');
}
(我意識到這是不完整的,基於在我的設計上,但它只是爲了測試。)$ userSessionVar在登錄後保存值「登錄」。可能不是最好的方式來做到這一點。這似乎並沒有工作(我將$數據傳遞給視圖)。我也試着做一個自定義函數:
function check_login()
{
$CI =& get_instance();
$userSessionVar = 'logged_in';
if(! $CI->session->userdata($userSessionVar))
{
return false;
} return true;
}
然後使用真/假返回結構$ header_output變量。這些似乎都不起作用。我是CodeIgniter的新手,擁有一些PHP/HTML/CSS的中級水平等等。我確信我錯過了一些明顯的東西,並希望得到任何幫助,並且瞭解如何避免包含代碼在每一個控制器功能。
感謝您的快速響應。我試圖讓我的頭腦 - 每次用戶訪問一個新頁面時,$用戶是否會被重置,或者只有一次,並且它會在整個用戶會話中持續?與將所有用戶數據加載到會話中相比,這有什麼優勢? – tchaymore 2010-07-14 19:25:02
@tchaymore:是的,我在每次加載頁面時都會從數據庫中重新加載用戶數據。與您將要運行的所有其他數據庫查詢相比,這通常是微不足道的。主要優點是,如果用戶的信息/權限(可以由其他用戶設置)在請求之間改變,$ this-> auth-> me()將始終返回新的數據。您存儲在會話中的任何數據都可能過時。此外,保持會話數據很小是個好主意,尤其是在數據存儲在cookie中的情況下。在小型網站上,這個論點可能並不具有說服力,但無論如何,它使代碼更簡單。 – 2010-07-14 19:41:22
感謝您的解釋。但是,該代碼爲「private $ user_data = false;」提供了「解析錯誤:語法錯誤,意外的T_PRIVATE」線。 – tchaymore 2010-07-14 22:37:52