:::

3-3 用 Tools::get_session() 來記住登入者身份

  1. class/Tools.php 是該模組的一個常用共同物件,取代早期的 function.php 共同函數檔
  2. 要使用裡面的物件方法(函數),可以直接使用以下方式來呼叫
     XoopsModules\Submission\Tools::get_session();
    不過,這樣實在太長了,為了簡短,可以在程式上方加入:
    use XoopsModules\Submission\Tools;

    如此,便可用以下的方式來呼叫物件方法

    Tools::get_session();

     

  3. get_session() 主要用來判斷登入者身份,若有其他額外身份,可以在此修改,這部份晚點會講到。
    //取得session
    public static function get_session()
    {
        global $xoopsUser;
    
        //判斷是否對該模組有管理權限
        if (!isset($_SESSION['submission_adm'])) {
            $_SESSION['submission_adm'] = isset($xoopsUser) && \is_object($xoopsUser) ? $xoopsUser->isAdmin() : false;
        }
    
        if (!isset($_SESSION['now_user'])) {
            $_SESSION['now_user'] = ($xoopsUser) ? $xoopsUser->toArray() : [];
        }
    
        if ($_SESSION['now_user']) {
            if (!isset($_SESSION['SchoolCode'])) {
                if ($_REQUEST['SchoolCode']) {
                    $_SESSION['SchoolCode'] = Request::getString('SchoolCode');
                } else {
                    $_SESSION['SchoolCode'] = ($xoopsUser) ? $xoopsUser->user_intrest() : false;
                }
            }
        }
    }

     

  4. 目前只要知道,該方法會產生數個session紀錄:
    1. $_SESSION['submission_adm'] 是紀錄該操作者是否有此模組管理權限
    2. $_SESSION['now_user']則是目前操作的的詳細資訊,包括姓名、Email等各種資訊
    3. $_SESSION['SchoolCode'] 是紀錄該操作者的學校代碼(若有的話)
  5. 其他模組也可能會有 $_SESSION['now_user'] $_SESSION['SchoolCode'],如果已經有,則不再重複紀錄。
  6. 若是想看看有哪些 session 內容,可以用以下方式來傾印出所有值:
    // 程式上方若沒有這行,記得加上才能使用
    use XoopsModules\Tadtools\Utility;
    
    Utility::dd($_SESSION);
  7. 若模組已經在運作中,不想影響他人,則可以用此方式,並於網址列最後多個test參數,如:「index.php?test=session」:
    Utility::test($_SESSION, 'session', 'dd');

    便可看見完整資訊(chrome可以安裝 JSON Viewer 套件,會有相同效果):
    img

  8. 最後,請將可以發布投稿主題的選項,現階段判斷只有管理員才顯示:
    if ($_SESSION['submission_adm']) {
        $interface_menu[_MD_SUBMISSION_SETUP] = "setup.php";
        $interface_icon[_MD_SUBMISSION_SETUP] = "fa-file-circle-plus";
    }
    
  9. 推薦作法:
    if (Tools::chk_is_adm('', '', __FILE__, __LINE__, 'return')) {
        $interface_menu[_MD_SUBMISSION_SETUP] = "setup.php";
        $interface_icon[_MD_SUBMISSION_SETUP] = "fa-file-circle-plus";
    }
    

     

 


:::

書籍目錄

展開 | 闔起

快速登入


https%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbdsn%3D2062%26tbsn%3D56

計數器

今天: 812812812
昨天: 1856185618561856
總計: 8776736877673687767368776736877673687767368776736