我正在为 HTML 模板处理一组标记。其中两个('{SYS_MENU}' 和 '{SUB_MENU}')用于为 Web 应用程序生成控制按钮。现在,在验证用户凭据之前,按钮会显示在登录页面上,我需要更改代码,以便在用户登录并到达主菜单之前隐藏按钮。当有人在他们的浏览器中键入 http: 地址并到达登录页面时,系统会在 MySQL 会话表中为他们启动一个会话,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}' 值更改为 => "" 会产生我想要的结果(IE 使菜单按钮消失)。所以我的下一个想法是我将创建一个 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 语句放入数组中。但是此链接上的文章描述了一种解决方法:
所以我重写了数组如下:
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(),
);
但这似乎根本没有效果。应用程序不会崩溃,但无论您是登录还是注销,按钮都是静态的。
我的问题是:我错过了什么?我可以看到这是可能的。但是我已经尝试了一天半的时间,似乎只是在围绕解决方案跳舞。您的想法将不胜感激。