:::

3-4 讓 setup.php 只有有權限者才能進入

  1. 只隱藏連結是不夠的,頁面本身也要判斷。
  2. 修改 setup.php 前先認識一下前台頁面結構,共有五大部份:
    1. 第一部份是 use 設定,端看下方用了哪些物件方法隨時加入
      <?php
      use Xmf\Request;
      use XoopsModules\Submission\Submission;
      use XoopsModules\Tadtools\TadUpFiles;
      use XoopsModules\Tadtools\Utility;
      
    2. 第二部份是引入必要的檔案:
      /*-----------引入檔案區--------------*/
      require_once __DIR__ . '/header.php';
      $GLOBALS['xoopsOption']['template_main'] = 'submission_setup.tpl';
      require_once XOOPS_ROOT_PATH . '/header.php';
      
      1. 第一個 header.php 是模組自己的 header.php,主要用來引入XOOPS最重要的設定檔  maindile.php 以及剛剛的 interface.php 檔案。
      2. 接著設定本頁面要使用的樣板檔,只要修改後面檔名即可,檔案都在模組的 templates 目錄下,必須在引入系統的 header.php 檔前設定好。
      3. 最後引入系統的 header.php 檔,用來載入產生網站畫面用的資訊,以及載入區塊等各種重要功能。
         
    3. 第三部份是接收外來的變數,並過濾之:
      /*-----------變數過濾----------*/
      $op       = Request::getString('op');
      $id       = Request::getInt('id');
      $files_sn = Request::getInt('files_sn');
      1. 其中 $op 用來作為流程判斷依據,幾乎每個模組都是這樣用。
      2. Request 是XOOPS的過濾物件,上方記得加入 use Xmf\Request;
      3. 想進一步了解,請參考:https://campus-xoops.tn.edu.tw/modules/tad_book3/page.php?tbsn=56&tbdsn=2064
         
    4. 第四部份是依據 $op 來判斷接下來要做什麼事:
      /*-----------執行動作判斷區----------*/
      switch ($op) {
      
          //新增資料
          case 'submission_store':
              $id = Submission::store();
              header("location: {$_SERVER['PHP_SELF']}?id=$id");
              exit;
      
          //更新資料
          case 'submission_update':
              $where_arr['id'] = $id;
              Submission::update($where_arr);
              header("location: {$_SERVER['PHP_SELF']}?id=$id");
              exit;
      
          //下載檔案
          case 'tufdl':
              $TadUpFiles = new TadUpFiles("submission");
              $TadUpFiles->add_file_counter($files_sn, false);
              exit;
      
          //新增用表單
          case 'submission_create':
              Submission::create();
              break;
      
          //修改用表單
          case 'submission_edit':
              Submission::create($id);
              $op = 'submission_create';
              break;
      
          //刪除資料
          case 'submission_destroy':
              Submission::destroy($id);
              header("location: {$_SERVER['PHP_SELF']}");
              exit;
      
          //列出所資料
          case 'submission_index':
              $where_arr = [];
              Submission::index($where_arr, [], [], [], 20);
              break;
      
          //顯示某筆資料
          case 'submission_show':
              $where_arr['id'] = $id;
              Submission::show($where_arr);
              break;
      
          //預設動作
          default:
              if (empty($id)) {
                  $where_arr = [];
                  Submission::index($where_arr, [], [], 20);
                  $op = 'submission_index';
              } else {
                  $where_arr['id'] = $id;
                  Submission::show($where_arr);
                  $op = 'submission_show';
              }
              break;
      }
      1. 基本上就是六件事:index (列出)、show (顯示)、create (表單)、store (寫入)、update (修改)、destroy (刪除)
      2. index (列出)、show (顯示)、create (表單) 需要有界面,因此,會有對應子樣板(名稱為 op_資料表_動作.tpl 依此類推,這不是官方規定,而是個人開發習慣)。
      3. store (寫入)、update (修改)、destroy (刪除) 沒有界面,但執行完需要轉向,所以,可以用沒訊息的方式轉向:
        header("location: {$_SERVER['PHP_SELF']}");
        exit;
        或者有訊息的方式轉向
        redirect_header($_SERVER['PHP_SELF'], 3, "已成功執行!");

         

    5. 第五部份是頁尾部份
      /*-----------秀出結果區--------------*/
      $xoopsTpl->assign('toolbar', Utility::toolbar_bootstrap($interface_menu, false, $interface_icon));
      $xoopsTpl->assign('now_op', $op);
      $xoTheme->addStylesheet('modules/submission/css/module.css');
      $xoTheme->addStylesheet('modules/tadtools/css/vtb.css');
      require_once XOOPS_ROOT_PATH . '/footer.php';
      1. 一般在此會用 $xoopsTpl->assign() 的方式,送一些必要的樣板標籤到樣板檔
      2. 或者用 $xoTheme->addStylesheet() 來載入各式 css檔,可避免重複載入
      3. 最後引入系統的 footer.php 檔,用來真正產生網站畫面。
         
  3. 加入權限限制,可以加在第二部份的下方:
    /*-----------引入檔案區--------------*/
    /*...略...*/
    if (!$_SESSION['submission_adm']) {
        redirect_header(XOOPS_URL . '/modules/submission/index.php', 3, _TAD_PERMISSION_DENIED);
    }

    更好的寫法:

    if (! Tools::chk_is_adm('', '', __FILE__, __LINE__, 'return')) {
        redirect_header("index.php", 3, "無操作權限");
    }
    

     


:::

書籍目錄

展開 | 闔起

快速登入


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

計數器

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