HTML テンプレートのトークンの配列を使用しています。そのうちの 2 つ ('{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 テンプレートで参照を直接操作することでした。PHP スクリプトを HTML に入力するだけで解決できるように見える w3schools の例を見ました。それは、大量のテキストをランダムにページにエコーする以外には何もしませんでした. その後、HTML で直接動作する前に、.HTACCESS エントリを使用して PHP をアクティブにする必要があるという別の引用を見つけました。しかし、それで取引が成立することもありませんでした。
配列内の '{SYS_MENU}' と '{SUB_MENU}' の値を => "" に変更すると、必要な結果が得られることがわかっています (つまり、メニュー ボタンが非表示になります)。そこで、次のように、状況に応じて 2 つのバージョンの配列を返す 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 ステートメント ...それは可能ですか?
そこで、配列を次のように書き直しました。
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(),
);
しかし、それはまったく効果がないようです。アプリケーションはクラッシュしませんが、ログインしているかログアウトしているかにかかわらず、ボタンは静的です。
私の質問は次のとおりです。何が欠けていますか? これが可能であることがわかります。しかし、私は1日半物事を試してきましたが、解決策の周りで踊っているようです. あなたの考えは大歓迎です。