Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] System uprawnien
sivyer
post
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 17.04.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Witam,

Kombinuje prawie caly dzien nad systemem uprawnien do panelu administracyjnego. Generalnie ma byc kilka grup (niezarejestrowani, zwykli userzy, moderatorzy, admini itd.), grupy beda dawaly tylko ogolne uprawnienia (np. dostep do komentarzy, dostep do panelu administracyjnego, ...).

Glownie mam problem z ulozeniem sprawnego systemu uprawnien do panelu administracyjnego. Na stronie jest przewidzianych kilkanascie dzialow na poczatek, z czasem bedzie ich przybywac. W kazdym dziale beda: tabele ligowe, wyniki, statystyki, sklady druzyn, profile graczy itd.
I teraz chodzi o to, zeby w panelu administracyjnym indywidualnie ustalac dla kazdego uzytkownika dostep do poszczegolnych czesci.

Skorzystalem z pomyslu kurtza z potegami dwojki, oto jak to sobie rozlozylem:
[php:1:cc5f9c6fa9]
// Poszczegolne podsekcje dla dzialu w panelu adm.
A - wyniki + statystyki : array("2","32","64","128","2048","4096","8192","32768");
B - kontuzje + transfery : array("4","32","256","512","2048","4096","16384","32768");
C - tabele : array("8","64","256","1024","2048","8192","16384","32768");
D - sklady + profile graczy : array("16","128","512","1024","4096","8192","16384","32768");

// Wszystkie kombinacje uprawnien jako kolejne potegi 2
// 1 - A = 2
// 2 - B = 4
// 3 - C = 8
// 4 - D = 16
// 5 - A+B = 32
// 6 - A+C = 64
// 7 - A+D = 128
// 8 - B+C = 256
// 9 - B+D = 512
// 10 - C+D = 1024
// 11 - A+B+C = 2048
// 12 - A+B+D = 4096
// 13 - A+C+D = 8192
// 14 - B+C+D = 16384
// 15 - A+B+C+D = 32768
[/php:1:cc5f9c6fa9]

Ponizej wersja 'na szybko' zmiany uprawnien dla uzytkownika:

[php:1:cc5f9c6fa9]
<?php

if( !isset($_POST['go']) ) {
?>
<form action=up.php method=post>
<table>
<tr><td><input type="checkbox" name="upr[]" value="A"></td><td>Wyniki + statystyki</td></tr>
<tr><td><input type="checkbox" name="upr[]" value="B"></td><td>Kontuzje + transfery</td></tr>
<tr><td><input type="checkbox" name="upr[]" value="C"></td><td>Tabele</td></tr>
<tr><td><input type="checkbox" name="upr[]" value="D"></td><td>Sklady + profile graczy</td></tr>
</table>
<input type=hidden name=go value=ok>
<input type=submit>
</form>
<?php
} else {
$rights = array(
"A" => "2",
"B" => "4",
"C" => "8",
"D" => "16",
"AB" => "32",
"AC" => "64",
"AD" => "128",
"BC" => "256",
"BD" => "512",
"CD" => "1024",
"ABC" => "2048",
"ABD" => "4096",
"ACD" => "8192",
"BCD" => "16384",
"ABCD" => "32768");

$tmp = '';

for( $i=0; $i<count($_POST['upr']); $i++ ) {
$tmp .= $_POST['upr'][$i];
}

echo $rights[$tmp];

}
?>
[/php:1:cc5f9c6fa9]

W bazie beda tabele z uprawnieniami dla uzytkownika w danym dziale:
Kod
user_id | section_id | user_rights



np.

1 | 1 | 32768


No i przy wejsciu na stronke sprawdzamy poziom uzytkownika z wymaganym dla danej stronki, np.

[php:1:cc5f9c6fa9]
<?php
$required = array("2","32","64","128","2048","4096","8192","32768");
$user_right = 128; // wybierane z bazy oczywiscie

if( array_search($user_right,$required) ) {
echo "Masz dostep";
} else {
echo "Nie masz dostepu";
}
?>
[/php:1:cc5f9c6fa9]

No i to tak mniej wiecej chyba tyle, co sadzicie o takim rozwiazaniu?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 13:10