簡體   English   中英

如果未使用PHP設置會話值,則從DB檢索會話內容

[英]Retrieve session content from DB if session value is not set with PHP

我使用數據庫功能從數據庫中生成菜單。 此功能取決於用戶配置文件。 因此,當用戶登錄時,該功能將繪制菜單內容,如下所示:

<li>menu1</li>
<li>menu2</li>
<li>menu3</li>

問題是每次我訪問其中一個頁面時,php代碼都會調用DB函數,所以我想將菜單內容存儲在_SESSION值上並使用它直到會話結束。

所以,我試試這個。 如果$ _SESSION ['showmenu']為空,則調用DB函數showmenuweb()並將菜單內容分配給$ _SESSION ['showmenu'],如果它不為空,則只需$ _SESSION ['showmenu']; 內容。

if(!isset($_SESSION['showmenu'])) {
     echo "there is no menu on session";
     $_SESSION['showmenu'] = showmenuweb('ADMIN');
} else {
     echo "there is menu on session";
     echo $_SESSION['showmenu'];

}

然后我用以下內容調用會話內容:

<php

echo $_SESSION['showmenu'];

?>

但是這段代碼總是調用showmenuweb()函數,看起來總是$ _SESSION ['showmenu']是空的。

任何幫助都會被貶低。

更新:這是代碼:

<?php

include_once('init.php');

if(!isset($_SESSION)) 
    { 
        session_start(); 
    } 

echo  $_SESSION['showmenu'];

if(!isset($_SESSION['showmenu'])) {
     echo "there is no menu on session";
     $_SESSION['showmenu'] = showmenuweb('ADMIN');
} else {
     echo "there is a menu on session";


}

?>

<!DOCTYPE html>
<html lang="en">
<body>
    <?php
    echo $_SESSION['showmenu'];
    echo '<br />';
    echo '<br />';
    showmenuweb('ADMIN');
    ?>



  </body>
</html>

html輸出顯示:

會議上沒有菜單

  • MENU1
  • MENU2
  • 菜單3
  • MENU1
  • MENU2
  • 菜單3
  • 我通過使用兩個會話變量來解決問題。

    首先分配db值$ _SESSION ['MENU'] = $ row ['SALIDA'];

    然后我檢查一下。

    if(!isset($_SESSION['MENU'])) {
              $_SESSION['SALIDA'] = showmenuweb('USER');
    }
    

    感謝大家的幫助。

    暫無
    暫無

    聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

     
    粵ICP備18138465號  © 2020-2024 STACKOOM.COM