我必须在php中动态地为用户提供编辑,查看,删除数据库中的值等访问权限,以便超级管理员可以从应用程序本身更改权限。(无需打开数据库并执行此操作对于每个用户而言。)
答案 0 :(得分:1)
可能与create db and user mysql and set privileges 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连接,具体取决于系统(或用户)试图做什么
请注意,我建议您在PHP中使用MySQLi而不是旧的mysql函数