Thank you. What I am trying to avoid is doing a parsing of the string everytime a user comes in. My thought is to use a user table, a group table and then a permissions table that will allow the user to be a member of more than one group.
Thank you, -Scott On Wed, 27 Feb 2002, Julio Nobrega Trabalhando wrote: > I've done it :-) > > But be careful. There are dozens of way to implement this. My way is > simple, but makes use of too many sql queries I believe. Could have stored > everything in one line and grab it at user's login, but anyway.... My > current way seems more logical to follow and update. > > I have created these 'groups of power', where you can add/remove users. > Since an user can be part of more than one group, I store in a session array > these groups ids. > > In a page where it's necessary to verify if the user (actually, the groups > he's attached to) can perform certain actions, there's a little check like > this: > > $var = ''; > foreach ($_SESSION['user']['group_ids'] as $value) { > $var .= "OR group_id = '$value' "; > } > > And a Mysql query: > > // 'groups' is a table with a collumn for every section of the site. > $sql = "SELECT section_power FROM groups WHERE id = 0 " . $var . "AND active > = 1"; > $res = mysql_query($sql); > while (list($section_power) = mysql_fetch_array($res)) { > // using parse_str() since the data is stored om Mysql as: > // r=1&w=1&d=0&m=0 > parse_str($section_power); > // More on discover_power() below > discover_powers($r,$w,$d,$m); > } > > function discover_powers($r, $w, $d, $m) { > // If there's no current power defined: > if (!isset($_SESSION['user']['powers']['section']['w'])) { > // User's power the same as the var; > $_SESSION['user']['powers']['section']['w'] = $w; > } else { > // Else, in the while loop above, he's assigned to one group with > power = 0 > // and another one with power = 1, let the user get 1 > if ($w > $_SESSION['user']['powers']['section']['w']) { > $_SESSION['user']['powers']['section']['w'] = $w; > } > } > > > Well, pretty much is like this. I am close to redesign the whole thing > because of the many SQL queries, the while loop calling two functions for > every group the user is attached, and because it's plain a 'not-elegant' > solution. > > Feel free to steal any ideas :-D > > -- > > Julio Nobrega. > > Um dia eu chego lá: > http://sourceforge.net/projects/toca > > > > -- -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php