【问题标题】:Howto disable/hide Navigation-Tab 'Status' in phpMyAdmin4 multi-user environment如何在 phpMyAdmin 4 多用户环境中禁用/隐藏导航选项卡“状态”
【发布时间】:2015-03-27 05:12:43
【问题描述】:

我需要在 phpMyAdmin4 多用户环境中禁用导航选项卡“状态”。 This post 解释了如何做到这一点,但它似乎适用于以前版本的 phpMyAdmin。

正如上面链接中所解释的,应该有一个名为“server_links.inc.php”的文件。在 'usr/share/phpmyadmin/libraries/' 下不存在这样的文件...这些是我的 server_* 文件:

  • server_bin_log.lib.php
  • server_collat​​ions.lib.php
  • server_common.inc.php
  • server_common.lib.php
  • server_databases.lib.php
  • server_engines.lib.php
  • server_plugins.lib.php
  • server_privileges.lib.php
  • server_status.lib.php
  • server_status_advisor.lib.php
  • server_status_monitor.lib.php
  • server_status_queries.lib.php
  • server_status_variables.lib.php
  • server_user_groups.lib.php
  • server_users.lib.php
  • server_variables.lib.php

标签导航存储在哪个文件中? 如何禁用/隐藏“状态”选项卡? 隐藏“状态”选项卡后,如何限制对“显示状态”等 SQL 查询的访问?

【问题讨论】:

    标签: php mysql phpmyadmin apache2


    【解决方案1】:

    如果您想在不触碰代码的情况下更改菜单选项卡,用户组功能可以做到这一点;见http://docs.phpmyadmin.net/en/latest/config.html?highlight=usergroup#cfg_Servers_usergroups

    您也可以在libraries/Menu.class.php 中更改代码。

    【讨论】:

      【解决方案2】:

      这是我在 /phpmyadmin/libraries/Menu.class.php 中隐藏标签“状态”的工作代码:

      if ($is_superuser) {
              $tabs['status']['icon'] = 's_status.png';
              $tabs['status']['link'] = 'server_status.php';
              $tabs['status']['text'] = __('Status');
              $tabs['status']['active'] = in_array(
                  basename($GLOBALS['PMA_PHP_SELF']),
                  array(
                      'server_status.php',
                      'server_status_advisor.php',
                      'server_status_monitor.php',
                      'server_status_queries.php',
                      'server_status_variables.php'
                  )
              );
          }
      

      这是我在 /phpmyadmin/server_status.php 中的工作代码,如果不是超级用户,无论如何都拒绝访问:

      if (!$GLOBALS['dbi']->isSuperuser()) {
          $msg = PMA_Message::error(__('No Privileges'));
          $msg->display();
          exit;
      }
      

      请注意,属于 server_status.php 的其他文件也应该包含超级用户检查,以便没有人可以直接访问这些文件:
      'server_status_advisor.php',
      'server_status_monitor.php',
      'server_status_queries.php',
      'server_status_variables.php'。

      【讨论】:

        【解决方案3】:

        对于最新的 phpmyadmin,您可以在 libraries/classes/menu.php

        参考函数_getMenu()

        if (strlen((string) $this->_table) > 0) {
            $tabs = $this->_getTableTabs();
            $url_params['db'] = $this->_db;
            $url_params['table'] = $this->_table;
            $level = 'table';
        } elseif (strlen($this->_db) > 0) {
            $tabs = $this->_getDbTabs();
            $url_params['db'] = $this->_db;
            $level = 'db';
        } else {
            $tabs = $this->_getServerTabs();
            $level = 'server';
        }
        

        然后你可以修改你想要的菜单,比如说编辑菜单表标签,然后编辑函数_getTableTabs。例如。你想让菜单导出永久隐藏然后在下面评论这段代码

        $tabs['export']['icon'] = 'b_tblexport';
        $tabs['export']['link'] = 'tbl_export.php';
        $tabs['export']['args']['single_table'] = 'true';
        $tabs['export']['text'] = __('Export');
        

        PS。此解决方案仅用于永久隐藏

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-27
          • 2020-09-10
          • 2018-03-27
          • 2013-01-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多