I like to create users, role, and user_roles tables.
CREATE TABLE Users (
PersonID int(10) unsigned NOT NULL default '0',
Username varchar(20) NOT NULL default '',
Password varchar(20) NOT NULL default '',
KEY PersonID (PersonID)
)
CREATE TABLE Roles (
RoleID int(10) unsigned NOT NULL auto_increment,
Role varchar(50) NOT NULL default '',
PRIMARY KEY (RoleID)
)
CREATE TABLE UserRoles (
PersonID int(10) unsigned NOT NULL default '0',
RoleID int(10) unsigned NOT NULL default '0',
UNIQUE KEY PersonID (PersonID,RoleID)
)
This makes for a extensible way to associate many users with many roles.
Next I lookup a users roles when they login and store them in a session array. I then use a function like is_user_in_role("admin") which simply just searches the session array for the role. The function might look like...
is_user_in_role($role) {
return in_array($role, $_SESSION['roles']);
}