2013-07-23 73 views
0

我正在爲HTML模板使用一組令牌。其中兩個('{SYS_MENU}'和'{SUB_MENU}')用於爲Web應用程序生成控制按鈕。現在,在用戶的憑證被驗證之前,按鈕顯示在登錄頁面上,我需要更改代碼,以便按鈕隱藏,直到用戶登錄並進入主菜單。當某人在他們的瀏覽器中鍵入http:地址併到達登錄頁面時,系統將在USER_ID = 0的MySQL會話表中爲他們啓動會話。登錄後,USER_ID更改爲在初始註冊時分配給他們的任何號碼例如:USER_ID = 54),並在會話結束時退出到0之後。將此常量綁定到按鈕似乎是最佳解決方案,並且在類似情況下我發現它可以在過去使用。根據與用戶ID相關的常量返回不同的PHP數組值

原來這裏是數組:

$template_vars = array(

    '{LANG_DIR}' => $lang_text_dir, 
    '{TITLE}' => theme_page_title($section), 
    '{CHARSET}' => $charset, 
    '{META}' => $meta, 
    '{GAL_NAME}' => $CONFIG['gallery_name'], 
    '{GAL_DESCRIPTION}' => $CONFIG['gallery_description'], 
    '{SYS_MENU}' => theme_main_menu('sys_menu'), 
    '{SUB_MENU}' => theme_main_menu('sub_menu'), 
    '{ADMIN_MENU}' => theme_admin_mode_menu(), 
    '{CUSTOM_HEADER}' => $custom_header, 
    '{JAVASCRIPT}' => theme_javascript_head(), 
    '{MESSAGE_BLOCK}' => theme_display_message_block(), 
); 

我做的第一件事就是直接引用在HTML模板工作。我在w3schools上看到一個例子,它使您看起來像只需在HTML中輸入PHP腳本並解決問題。除了隨機地將一堆文本回顯到頁面之外,這沒有任何作用。然後,我發現另一個引用,說你必須先使用.HTACCESS條目激活PHP,然後才能直接在HTML中工作。但是這也沒有達成交易。我知道將數組中的'{SYS_MENU}'和'{SUB_MENU}'值更改爲=>「」會產生我想要的結果(I.E.使菜單按鈕消失)。所以,我的下一個想法是,我會創建一個返回根據情況陣列的兩個版本的IF語句,是這樣的:

if(USER_ID != 0) 

{ 

return $template_vars = //FIRST VERSION OF ARRAY WITH FULL VALUES// 

} 

else 

{ 

return $template_vars = //SECOND VERSION OF ARRAY WITH ONLY => ""// 

} 

但是,一切都做的是使應用程序負載在一個白色的屏幕,沒有終止錯誤反饋。

我最近嘗試來自東西,我在這裏讀堆棧溢出。我知道你不能把IF語句放入數組中。但文章在這個環節中描述的解決方法:

If statement within an array declaration ...is that possible?

所以我改寫了數組如下:

template_vars = array(

    '{LANG_DIR}' => $lang_text_dir, 
    '{TITLE}' => theme_page_title($section), 
    '{CHARSET}' => $charset, 
    '{META}' => $meta, 
    '{GAL_NAME}' => $CONFIG['gallery_name'], 
    '{GAL_DESCRIPTION}' => $CONFIG['gallery_description'], 
    '{SYS_MENU}' => ('USER_ID != 0' ? theme_main_menu('sys_menu') : ""), 
    '{SUB_MENU}' => ('USER_ID != 0' ? theme_main_menu('sub_menu') : ""), 
    '{ADMIN_MENU}' => theme_admin_mode_menu(), 
    '{CUSTOM_HEADER}' => $custom_header, 
    '{JAVASCRIPT}' => theme_javascript_head(), 
    '{MESSAGE_BLOCK}' => theme_display_message_block(), 
); 

,但似乎沒有任何效果可言。應用程序不會崩潰,但無論您是登錄還是註銷,按鈕都是靜態的。

我的問題是:我錯過了什麼?我可以看到這是可能的。但是我一直在嘗試一天半的事情,似乎在圍繞解決方案跳舞。你的想法將不勝感激。

+0

不回...只是分配 – Orangepill

回答

1

這裏的問題在於你正在調用return。使用像這樣的全局包含文件,沒有上下文返回到應用程序終止。你想要做的只是分配變量。

if(USER_ID != 0) 
{ 
    $template_vars = //FIRST VERSION OF ARRAY WITH FULL VALUES// 
} 
else 
{ 
    $template_vars = //SECOND VERSION OF ARRAY WITH ONLY => ""// 
} 
+0

謝謝Orangepill。這讓它工作。我的錯誤是認爲你需要返回來在內部發送結果(如echo,除了僅爲了代碼的利益而打印)。 –

相關問題