⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server_privileges.php

📁 一个用PHP编写的
💻 PHP
📖 第 1 页 / 共 5 页
字号:
        } else {            $row = array('Table_priv' => '');        }    }    if (isset($row['Table_priv'])) {        $res = PMA_DBI_query(            'SHOW COLUMNS FROM `mysql`.`tables_priv` LIKE \'Table_priv\';',            $GLOBALS['userlink'] );        // note: in MySQL 5.0.3 we get "Create View', 'Show view';        // the View for Create is spelled with uppercase V        // the view for Show is spelled with lowercase v        // and there is a space between the words        $row1 = PMA_DBI_fetch_assoc($res);        PMA_DBI_free_result($res);        $av_grants = explode ('\',\'', substr($row1['Type'], strpos($row1['Type'], '(') + 2, strpos($row1['Type'], ')') - strpos($row1['Type'], '(') - 3));        unset($res, $row1);        $users_grants = explode(',', $row['Table_priv']);        foreach ($av_grants as $current_grant) {            $row[$current_grant . '_priv'] = in_array($current_grant, $users_grants) ? 'Y' : 'N';        }        unset($row['Table_priv'], $current_grant, $av_grants, $users_grants);        // get collumns        $res = PMA_DBI_try_query('SHOW COLUMNS FROM `' . PMA_unescape_mysql_wildcards( $db ) . '`.`' . $table . '`;');        $columns = array();        if ( $res ) {            while ($row1 = PMA_DBI_fetch_row($res)) {                $columns[$row1[0]] = array(                    'Select' => FALSE,                    'Insert' => FALSE,                    'Update' => FALSE,                    'References' => FALSE                );            }            PMA_DBI_free_result($res);        }        unset($res, $row1);    }    // t a b l e - s p e c i f i c    p r i v i l e g e s    if ( ! empty( $columns ) ) {        $res = PMA_DBI_query(            'SELECT `Column_name`, `Column_priv`'            .' FROM `mysql`.`columns_priv`'            .' WHERE ' . PMA_convert_using('`User`')            .' = ' . PMA_convert_using(PMA_sqlAddslashes($username), 'quoted')            .' AND ' . PMA_convert_using('`Host`')            .' = ' . PMA_convert_using($hostname, 'quoted')            .' AND ' . PMA_convert_using('`Db`')            .' = ' . PMA_convert_using( PMA_unescape_mysql_wildcards( $db ), 'quoted')            .' AND ' . PMA_convert_using('`Table_name`')            .' = ' . PMA_convert_using($table, 'quoted') . ';');        while ($row1 = PMA_DBI_fetch_row($res)) {            $row1[1] = explode(',', $row1[1]);            foreach ($row1[1] as $current) {                $columns[$row1[0]][$current] = TRUE;            }        }        PMA_DBI_free_result($res);        unset( $res, $row1, $current );        echo $spaces . '<input type="hidden" name="grant_count" value="' . count($row) . '" />' . "\n"           . $spaces . '<input type="hidden" name="column_count" value="' . count($columns) . '" />' . "\n"           . $spaces . '<fieldset id="fieldset_user_priv">' . "\n"           . $spaces . '    <legend>' . $GLOBALS['strTblPrivileges'] . '</legend>' . "\n"           . $spaces . '    <p><small><i>' . $GLOBALS['strEnglishPrivileges'] . '</i></small></p>' . "\n";        // privs that are attached to a specific column        PMA_display_column_privs($spaces, $columns, $row, 'Select_priv', 'SELECT', 'select', $GLOBALS['strPrivDescSelect'], 'Select');        PMA_display_column_privs($spaces, $columns, $row, 'Insert_priv', 'INSERT', 'insert', $GLOBALS['strPrivDescInsert'], 'Insert');        PMA_display_column_privs($spaces, $columns, $row, 'Update_priv', 'UPDATE', 'update', $GLOBALS['strPrivDescUpdate'], 'Update');        PMA_display_column_privs($spaces, $columns, $row, 'References_priv', 'REFERENCES', 'references', $GLOBALS['strPrivDescReferences'], 'References');        // privs that are not attached to a specific column        echo $spaces . '    <div class="item">' . "\n";        foreach ($row as $current_grant => $current_grant_value) {            if (in_array(substr($current_grant, 0, (strlen($current_grant) - 5)), array('Select', 'Insert', 'Update', 'References'))) {                continue;            }            // make a substitution to match the messages variables;            // also we must substitute the grant we get, because we can't generate            // a form variable containing blanks (those would get changed to            // an underscore when receiving the POST)            if ($current_grant == 'Create View_priv') {                $tmp_current_grant = 'CreateView_priv';                $current_grant = 'Create_view_priv';            } elseif ($current_grant == 'Show view_priv') {                $tmp_current_grant = 'ShowView_priv';                $current_grant = 'Show_view_priv';            } else {                $tmp_current_grant = $current_grant;            }            echo $spaces . '        <div class="item">' . "\n"               . $spaces . '            <input type="checkbox"' . (empty($GLOBALS['checkall']) ?  '' : ' checked="checked"') . ' name="' . $current_grant . '" id="checkbox_' . $current_grant . '" value="Y" ' . ($current_grant_value == 'Y' ? 'checked="checked" ' : '') . 'title="';            echo (isset($GLOBALS['strPrivDesc' . substr($tmp_current_grant, 0, (strlen($tmp_current_grant) - 5))]) ? $GLOBALS['strPrivDesc' . substr($tmp_current_grant, 0, (strlen($tmp_current_grant) - 5))] : $GLOBALS['strPrivDesc' . substr($tmp_current_grant, 0, (strlen($tmp_current_grant) - 5)) . 'Tbl']) . '"/>' . "\n";            echo $spaces . '            <label for="checkbox_' . $current_grant . '"><tt><dfn title="' . (isset($GLOBALS['strPrivDesc' . substr($tmp_current_grant, 0, (strlen($tmp_current_grant) - 5))]) ? $GLOBALS['strPrivDesc' . substr($tmp_current_grant, 0, (strlen($tmp_current_grant) - 5))] : $GLOBALS['strPrivDesc' . substr($tmp_current_grant, 0, (strlen($tmp_current_grant) - 5)) . 'Tbl']) . '">' . strtoupper(substr($current_grant, 0, strlen($current_grant) - 5)) . '</dfn></tt></label>' . "\n"               . $spaces . '        </div>' . "\n";        } // end foreach ()        echo $spaces . '    </div>' . "\n";        // for Safari 2.0.2        echo $spaces . '    <div class="clearfloat"></div>' . "\n";    } else {        // g l o b a l    o r    d b - s p e c i f i c        //        // d a t a        $privTable[0] = array(            array('Select', 'SELECT', $GLOBALS['strPrivDescSelect']),            array('Insert', 'INSERT', $GLOBALS['strPrivDescInsert']),            array('Update', 'UPDATE', $GLOBALS['strPrivDescUpdate']),            array('Delete', 'DELETE', $GLOBALS['strPrivDescDelete'])        );        if ($db == '*') {            $privTable[0][] = array('File', 'FILE', $GLOBALS['strPrivDescFile']);        }        // s t r u c t u r e        $privTable[1] = array(            array('Create', 'CREATE', ($table == '*' ? $GLOBALS['strPrivDescCreateDb'] : $GLOBALS['strPrivDescCreateTbl'])),            array('Alter', 'ALTER', $GLOBALS['strPrivDescAlter']),            array('Index', 'INDEX', $GLOBALS['strPrivDescIndex']),            array('Drop', 'DROP', ($table == '*' ? $GLOBALS['strPrivDescDropDb'] : $GLOBALS['strPrivDescDropTbl']))        );        if (isset($row['Create_tmp_table_priv'])) {            $privTable[1][] = array('Create_tmp_table', 'CREATE TEMPORARY TABLES', $GLOBALS['strPrivDescCreateTmpTable']);        }        // this one is for a db-specific priv: Create_view_priv        if (isset($row['Create_view_priv'])) {            $privTable[1][] = array('Create_view', 'CREATE VIEW', $GLOBALS['strPrivDescCreateView']);        }        // this one is for a table-specific priv: Create View_priv        if (isset($row['Create View_priv'])) {            $privTable[1][] = array('Create View', 'CREATE VIEW', $GLOBALS['strPrivDescCreateView']);        }        if (isset($row['Show_view_priv'])) {            $privTable[1][] = array('Show_view', 'SHOW VIEW', $GLOBALS['strPrivDescShowView']);        }        if (isset($row['Create_routine_priv'])) {            $privTable[1][] = array('Create_routine', 'CREATE ROUTINE', $GLOBALS['strPrivDescCreateRoutine']);        }        if (isset($row['Alter_routine_priv'])) {            $privTable[1][] = array('Alter_routine', 'ALTER ROUTINE', $GLOBALS['strPrivDescAlterRoutine']);        }        if (isset($row['Execute_priv'])) {            if (PMA_MYSQL_INT_VERSION >= 40002 && PMA_MYSQL_INT_VERSION <50003) {                $privTable[1][] = array('Execute', 'EXECUTE', $GLOBALS['strPrivDescExecute']);            } else {                $privTable[1][] = array('Execute', 'EXECUTE', $GLOBALS['strPrivDescExecute5']);            }        }        // a d m i n i s t r a t i o n        $privTable[2] = array();        if (isset($row['Grant_priv'])) {            $privTable[2][] = array('Grant', 'GRANT', $GLOBALS['strPrivDescGrant']);        }        if ($db == '*') {            if (isset($row['Super_priv'])) {                $privTable[2][] = array('Super', 'SUPER', $GLOBALS['strPrivDescSuper']);                $privTable[2][] = array('Process', 'PROCESS', $GLOBALS['strPrivDescProcess4']);            } else {                $privTable[2][] = array('Process', 'PROCESS', $GLOBALS['strPrivDescProcess3']);            }            $privTable[2][] = array('Reload', 'RELOAD', $GLOBALS['strPrivDescReload']);            $privTable[2][] = array('Shutdown', 'SHUTDOWN', $GLOBALS['strPrivDescShutdown']);            if (isset($row['Show_db_priv'])) {                $privTable[2][] = array('Show_db', 'SHOW DATABASES', $GLOBALS['strPrivDescShowDb']);            }        }        if (isset($row['Lock_tables_priv'])) {            $privTable[2][] = array('Lock_tables', 'LOCK TABLES', $GLOBALS['strPrivDescLockTables']);        }        $privTable[2][] = array('References', 'REFERENCES', $GLOBALS['strPrivDescReferences']);        if ($db == '*') {            //if (isset($row['Execute_priv'])) {            //    $privTable[2][] = array('Execute', 'EXECUTE', $GLOBALS['strPrivDescExecute']);            //}            if (isset($row['Repl_client_priv'])) {                $privTable[2][] = array('Repl_client', 'REPLICATION CLIENT', $GLOBALS['strPrivDescReplClient']);            }            if (isset($row['Repl_slave_priv'])) {                $privTable[2][] = array('Repl_slave', 'REPLICATION SLAVE', $GLOBALS['strPrivDescReplSlave']);            }            if (isset($row['Create_user_priv'])) {                $privTable[2][] = array('Create_user', 'CREATE USER', $GLOBALS['strPrivDescCreateUser']);            }        }        echo $spaces . '<input type="hidden" name="grant_count" value="' . (count($privTable[0]) + count($privTable[1]) + count($privTable[2]) - (isset($row['Grant_priv']) ? 1 : 0)) . '" />' . "\n"           . $spaces . '<fieldset id="fieldset_user_global_rights">' . "\n"           . $spaces . '    <legend>' . "\n"           . $spaces . '        ' . ($db == '*' ? $GLOBALS['strGlobalPrivileges'] : ($table == '*' ? $GLOBALS['strDbPrivileges'] : $GLOBALS['strTblPrivileges'])) . "\n"           . $spaces . '        ( <a href="./server_privileges.php?' . $GLOBALS['url_query'] .  '&amp;checkall=1" onclick="setCheckboxes(\'usersForm\', true); return false;">' . $GLOBALS['strCheckAll'] . '</a> /' . "\n"           . $spaces . '        <a href="./server_privileges.php?' . $GLOBALS['url_query'] .  '" onclick="setCheckboxes(\'usersForm\', false); return false;">' . $GLOBALS['strUncheckAll'] . '</a> )' . "\n"           . $spaces . '    </legend>' . "\n"           . $spaces . '    <p><small><i>' . $GLOBALS['strEnglishPrivileges'] . '</i></small></p>' . "\n"           . $spaces . '    <fieldset>' . "\n"           . $spaces . '        <legend>' . $GLOBALS['strData'] . '</legend>' . "\n";        foreach ( $privTable[0] as $priv )        {            echo $spaces . '        <div class="item">' . "\n"               . $spaces . '            <input type="checkbox"' . (empty($GLOBALS['checkall']) ?  '' : ' checked="checked"') . ' name="' . $priv[0] . '_priv" id="checkbox_' . $priv[0] . '_priv" value="Y" ' . ($row[$priv[0] . '_priv'] == 'Y' ? 'checked="checked" ' : '') . 'title="' . $priv[2] . '"/>' . "\n"               . $spaces . '            <label for="checkbox_' . $priv[0] . '_priv"><tt><dfn title="' . $priv[2] . '">' . $priv[1] . '</dfn></tt></label>' . "\n"               . $spaces . '        </div>' . "\n";        }        echo $spaces . '    </fieldset>' . "\n"           . $spaces . '    <fieldset>' . "\n"           . $spaces . '        <legend>' . $GLOBALS['strStructure'] . '</legend>' . "\n";        foreach ( $privTable[1] as $priv )        {            echo $spaces . '        <div class="item">' . "\n"               . $spaces . '            <input type="checkbox"' . (empty($GLOBALS['checkall']) ?  '' : ' checked="checked"') . ' name="' . $priv[0] . '_priv" id="checkbox_' . $priv[0] . '_priv" value="Y" ' . ($row[$priv[0] . '_priv'] == 'Y' ? 'checked="checked" ' : '') . 'title="' . $priv[2] . '"/>' . "\n"               . $spaces . '            <label for="checkbox_' . $priv[0] . '_priv"><tt><dfn title="' . $priv[2] . '">' . $priv[1] . '</dfn></tt></label>' . "\n"               . $spaces . '        </div>' . "\n";        }        echo $spaces . '    </fieldset>' . "\n"           . $spaces . '    <fieldset>' . "\n"           . $spaces . '        <legend>' . $GLOBALS['strAdministration'] . '</legend>' . "\n";        foreach ( $privTable[2] as $priv )        {            echo $spaces . '        <div class="item">' . "\n"               . $spaces . '            <input type="checkbox"' . (empty($GLOBALS['checkall']) ?  '' : ' checked="checked"') . ' name="' . $priv[0] . '_priv" id="checkbox_' . $priv[0] . '_priv" value="Y" ' . ($row[$priv[0] . '_priv'] == 'Y' ? 'checked="checked" ' : '') . 'title="' . $priv[2] . '"/>' . "\n"               . $spaces . '            <label for="checkbox_' . $priv[0] . '_priv"><tt><dfn title="' . $priv[2] . '">' . $priv[1] . '</dfn></tt></label>' . "\n"               . $spaces . '        </div>' . "\n";        }        echo $spaces . '    </fieldset>' . "\n";        // The "Resource limits" box is not displayed for db-specific privs        if ($db == '*' && PMA_MYSQL_INT_VERSION >= 40002) {            echo $spaces . '    <fieldset>' . "\n"               . $spaces . '        <legend>' . $GLOBALS['strResourceLimits'] . '</legend>' . "\n"               . $spaces . '        <p><small><i>' . $GLOBALS['strZeroRemovesTheLimit'] . '</i></small></p>' . "\n"               . $spaces . '        <div class="item">' . "\n"               . $spaces . '            <label for="text_max_questions"><tt><dfn title="' . $GLOBALS['strPrivDescMaxQuestions'] . '">MAX QUERIES PER HOUR</dfn></tt></label>' . "\n"               . $spaces . '            <input type="text" name="max_questions" id="text_max_questions" value="' . $row['max_questions'] . '" size="11" maxlength="11" title="' . $GLOBALS['strPrivDescMaxQuestions'] . '" />' . "\n"               . $spaces . '        </div>' . "\n"               . $spaces . '        <div class="item">' . "\n"               . $spaces . '            <label for="text_max_updates"><tt><dfn title="' . $GLOBALS['strPrivDescMaxUpdates'] . '">MAX UPDATES PER HOUR</dfn></tt></label>' . "\n"               . $spaces . '            <input type="text" name="max_updates" id="text_max_updates" value="' . $row['max_updates'] . '" size="11" maxlength="11" title="' . $GLOBALS['strPrivDescMaxUpdates'] . '" />' . "\n"               . $spaces . '        </div>' . "\n"               . $spaces . '        <div class="item">' . "\n"               . $spaces . '            <label for="text_max_connections"><tt><dfn title="' . $GLOBALS['strPrivDescMaxConnections'] . '">MAX CONNECTIONS PER HOUR</dfn></tt></label>' . "\n"               . $spaces . '            <input type="text" name="max_connections" id="text_max_connections" value="' . $row['max_connections'] . '" size="11" maxlength="11" title="' . $GLOBALS['strPrivDescMaxConnections'] . '" />' . "\n"               . $spaces . '        </div>' . "\n";            if (PMA_MYSQL_INT_VERSION >= 50003) {                echo $spaces . '        <div class="item">' . "\n"                   . $spaces . '            <label for="text_max_user_connections"><tt><dfn title="' . $GLOBALS['strPrivDescMaxUserConnections'] . '">MAX USER_CONNECTIONS</dfn></tt></label>' . "\n"                   . $spaces . '            <input type="text" name="max_user_connections" id="text_max_user_connections" value="' . $row['max_user_connections'] . '" size="11" maxlength="11" title="' . $GLOBALS['strPrivDescMaxUserConnections'] . '" />' . "\n"                   . $spaces . '        </div>' . "\n";            }            echo $spaces . '    </fieldset>' . "\n";           }        // for Safari 2.0.2        echo $spaces . '    <div class="clearfloat"></div>' . "\n";    }    echo $spaces . '</fieldset>' . "\n";    if ($submit) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -