Code: Selecteer alles
CREATE TABLE `usergroups` (
`rid` int(11) NOT NULL default '0',
`naam` varchar(25) NOT NULL default '',
`beschrijving` text NOT NULL,
`view_admin` enum('0','1') NOT NULL default '0',
`useradmin` enum('0','1') NOT NULL default '0',
`post_usernote` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`rid`,`rid`)
) TYPE=MyISAM;
Code: Selecteer alles
<?php
/*
Door: Aar
Naam: Rechtenchecker V1.
Uitleg:
Een script om rechten mee te checken en aan te maken. Het werkt net als Windows XP rechtensysteem; met usergroups dus.
Een user zit gekoppeld aan een usergroup en in de usergroup staan de rechten. Hiermee wordt bepaald wat een user nou wel of niet mag.
Per recht dient een veld aangemaakt te worden. Dit veld bestaat uit de naam van het recht (bijv. post_usernote) die het type ENUM heeft.
De waardes ervan zijn 0 en 1 en standaard hoort hij op 0 te staan.
Tevens om user werkelijk een usergroup toe te wijzen dient een veld aangemaakt te worden in de ledentabel die Recht heet. Deze
wordt een INT veld. De standaard waarde kan je op 1 zetten. Dan dient wel tevens een usergroep met id-nr 1 te bestaan waarin de ledenrechten
ingesteld staan.
Het onderste script bestaat uit 3 delen: De querie die ingeklopt moet worden in phpMyAdmin (met enkele voorbeeld rechten), het checkscript
die op elke pagina geincludeerd moet worden, en de recht-gever, die checkt of je dat recht mag gebruiken volgens de database.
Die if ($_SESSION['logged_in']) kan je aanpassen naar de manier van "ingelogd-zijn"-check die jouw ledensysteem kent.
ToDo:
- Adminpanel bouwen
- Betere MySQL foutenafhandeling.
- Bestaand inlogsysteempje als voorbeeld gebruiken om dit systeem te demonstreren.
Succes.
Het script:
/*
CREATE TABLE `usergroups` (
`rid` int(11) NOT NULL default '0',
`naam` varchar(25) NOT NULL default '',
`beschrijving` text NOT NULL,
`view_admin` enum('0','1') NOT NULL default '0',
`useradmin` enum('0','1') NOT NULL default '0',
`post_usernote` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`rid`,`rid`)
) TYPE=MyISAM;
*/
// kijken of je ingelogd bent, altijd handig....
if ($_SESSION['logged_in']) {
// selecteer het leden-id nummer
$select_lid = mysql_query("SELECT * FROM leden WHERE id = '$_SESSION[id]'") or die (mysql_error());
while($main_obj = mysql_fetch_object($select_lid)){
// $main_obj->Recht zorgt dus dat het ID uit de ledentabel van het recht
// van jouw wordt opgehaald uit het veld Recht.
$rechtenid = $main_obj->Recht;
$select_rights = mysql_query("SELECT * FROM usergroups WHERE rid = '$rechtenid'") or die (mysql_error());
$check_right = mysql_fetch_object($select_rights);
}
} // login check
?>
Met "$check_right->post_usernote" kan je dus bijv. een check doen of een user
een usernote mag plaatsen.
De source is dan:
<?php
if ($check_right->post_usernote) {
// Je mag een usernote plaatsen
} else {
// Geen usernote plaatsen
}
?>
Opzich erg leuk als je 20 rechten checkt in de Admin, wat je wel niet mag.
Hoe kan ik dit aanpassen zodat dit minder queries gebruikt.
Iets met JOINS denk ik aan ?