2013-07-23 54 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,除了仅为了代码的利益而打印)。 –

相关问题