我正在处理HTML模板的一系列令牌。其中两个('{SYS_MENU}'和'{SUB_MENU}')用于为Web应用程序生成控制按钮。现在,在验证用户凭证之前,按钮会显示在登录页面上,我需要更改代码,以便在用户登录并到达主菜单之前隐藏按钮。当有人在他们的浏览器中键入http:地址并到达登录页面时,系统会在USER会话表中为USER_ID = 0启动会话。登录后,USER_ID会更改为初次注册时分配给他们的任何号码(示例:USER_ID = 54),并且在会话结束时将其注销回到0.将此常量绑定到按钮似乎是最佳解决方案,并且我已经发现它在过去类似情况下工作。
这是原始数组:
$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上看到了一个例子,它让你看起来只需要将PHP脚本输入HTML并让它解决。除了将一堆文本随机地回到页面中之外,这没有做任何事情。然后我找到了另一个引用,表示你必须先使用.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 => ""//
}
但所有这一切都导致应用程序加载终止于白屏并且没有错误反馈。
我最近的尝试来自于我在Stack Overflow上阅读的内容。我知道你不能将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 :(得分:1)
这里的问题是你要回来。使用像这样的全局包含文件,没有返回的上下文,因此应用程序终止。你想要做的只是分配变量。
if(USER_ID != 0)
{
$template_vars = //FIRST VERSION OF ARRAY WITH FULL VALUES//
}
else
{
$template_vars = //SECOND VERSION OF ARRAY WITH ONLY => ""//
}