-2

我必须在 php 中动态地向用户提供编辑、查看、删除数据库中的值等访问权限,以便超级管理员可以从应用程序本身更改权限。(无需打开数据库并为每个和每个用户)。

4

1 回答 1

1

可能与创建数据库和用户 mysql 并设置权限 php重复

假设我们有一个 mysql 数据库:

mysql_connect('localhost','user',password);
mysql_query("CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';");
mysql_query("GRANT ALL ON db1.* TO 'username'@'localhost'");
mysql_query("CREATE DATABASE newdatabase");
mysql_close();

在http://dev.mysql.com/doc/refman/5.1/en/grant.html阅读更多关于 mysql 数据库的访问权限以及在http://dev.mysql.com/doc/refman/5.1创建数据库用户/en/create-user.html

稍后编辑

$user_priviledges = array(
                       '__SELECT__' => array("select_user","password"),
                       '__SELECT_DELETE__' => array("select_delete_user","password")
                    );
// first you use just __SELECT__ user for getting the current user access information
mysql_connect('localhost', $user_priviledges['__SELECT__'][0], $user_priviledges['__SELECT__'][1]);
mysql_select_db('my_db');
$sql = mysql_query("SELECT user_access FROM access WHERE user_id='$my_loged_user_id'");
$row = mysql_fetch_array($sql);
if ($row['user_access'] != '__SELECT__') {
    mysql_close();

    // after you close the above mysql connection we can connect again with the real user access 
    mysql_connect('localhost', $user_priviledges[$row['user_access']][0], $user_priviledges[$row['user_access']][1]);
    mysql_select_db('my_db');
}

// my rest of code

mysql_close();

您必须注意系统的用户和用户访问权限,为此我认为您必须实现一些类,这些类将根据系统(或用户)尝试执行的操作来打开/关闭 mysql 连接

请注意,我建议您使用 MySQLi 而不是 PHP 中的旧 mysql 函数

于 2012-10-26T06:14:50.987 回答