Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak zrobic cos takiego bo nie mam pomyslu
makay
post 19.01.2004, 14:41:34
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 3.11.2003
Skąd: Bydgoszcz

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


Jak zrobic cos takiego , ze przy rejestracji uzytkownik podaje z jakich serwisow bedzie kozystal (powiedzmy jest 5 serwisow on zaznacza 3 )
Po rejestracji uzytkownik ma dostep tylko do tych serwisow ktore wybral di nnnych nie .
Jak to zrobic , proste autoryzacje dla grup juz umiem robic ale taka zamotana , gdzie mozliwe jest tyle kombinacji nie jest mozliwe do zrobienia technikami ktore ja umiem sad.gif
Help plizz
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
DreeD
post 19.01.2004, 14:44:11
Post #2





Grupa: Przyjaciele php.pl
Postów: 120
Pomógł: 0
Dołączył: 29.11.2003
Skąd: Tarnów

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


jak dla mnie to to sie troche mija z celem... po co blokowac komus dostep do danego dzialu skoro moze przy rejestracji wybrac sobie odpowiedni... kazdy wybiera wszystkie 5 i co? :?
Go to the top of the page
+Quote Post
kszychu
post 19.01.2004, 14:53:29
Post #3





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Uprawnienia do serwisów przechowuj jako liczbę, np:
masz pięć serwisów i teraz kilka sytuacji:
1. Uzytkownik ma dostęp do wszystkich (11111) 31
2. Nie ma dostepu do zadnego (00000) 0
3. Ma dostęp do pierwszego i ostatniego (10001) 17

A pozniej juz tylko robisz and na uprawnieniach uzytkownika i uprawnieniach wymaganych do wejścia do danego serwisu
if($user->uprawnienia & $serwis->uprawnienia == $serwis->uprawnienia) to wpuszczasz

Jasne?


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
spenalzo
post 19.01.2004, 14:55:53
Post #4





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


http://forum.php.pl/viewtopic.php?t=8182


--------------------

Go to the top of the page
+Quote Post
stach
post 20.01.2004, 01:06:28
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 15.02.2003
Skąd: Ziemia

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


Skoro znowu wrocilo do tego przedstawie swoj sposob, choc poczesci jest on poprostu rozbudowaniem ideii kszycha.

Ja mialem problem z tym iz moj "string" z uprawnieniami zaczynal sie rozrazstac i to azzanadto, co poporstu przestalo wygladac estetycznie (moze i to nie ma znaczenia dla skryptu ale dla mnie mialo smile.gif ), wiec rozwiazalem ten problem w taki sposob :

[php:1:7efe5e51b2]<?php
// Konwersja uprawnien bin do dec dluzszych niz 31 bitow.
// by stach : stach@stach.one.pl
// ver. 1.1.0

$upr_bin =
'11111110110001110101111111011111111111011000111010111111101111111111101111011011
11011011110111';

class upr_do {
var $bit = 16;
var $zacznij = 0;
var $koniec = false;


function upr_do($upr_bin) {
$this->co_ile = $this->bit;
$this->upr_bin = $upr_bin;
$this->podziel($this->koniec);
}

function podziel($koniec) {
for($i=$this->zacznij; $i<$this->co_ile; $i++) {
$this->_temp .= $this->upr_bin[$i];
}
$this->zapisz($koniec);
}

function zapisz($koniec) {
$this->resultat .= ((strlen($this->_temp) != $this->bit) ? (bindec(str_pad($this->_temp,$this->bit,'0'))) : (bindec($this->_temp))) . ($przecinek = ($koniec == false) ? ('|') : (''));
unset($this->_temp);
if($koniec == true) {
end;
}
else {
$this->zacznij = $this->co_ile;
$this->co_ile = $this->co_ile + $this->bit;
if($this->co_ile >= strlen($this->upr_bin)) {
$this->co_ile = $this->zacznij + ($this->bit - ($this->co_ile - strlen($this->upr_bin)));
$this->koniec = true;
}
$this->podziel($this->koniec);
}
}
}


class upr_get extends upr_do{
function upr_get($upr_dec) {
$this->upr_dec = $upr_dec;
$this->explode_upr($this->upr_dec);
$this->upr_decbin($this->upr_dec);
}

function explode_upr($upr_dec) {
$this->upr_dec = explode('|', $upr_dec);
}

function upr_decbin($upr_dec) {
foreach($upr_dec as $_temp) {
$this->resultat .= ((count(decbin($_temp)) != $this->bit) ? (str_pad(decbin($_temp),$this->bit,'0',STR_PAD_LEFT)) : (decbin($_temp)));
}
}
}

echo '<p>Uprawnienia efektywne: <p>'. $upr_bin;
$upr_dec = new upr_do($upr_bin);
echo '<p>Uprawnienia zapis: <p>'. $upr_dec->resultat;
$upr_bin = new upr_get($upr_dec->resultat);
echo '<p>Uprawnienia efektywne konwersja z zapisu: <p>' .$upr_bin->resultat;
?>[/php:1:7efe5e51b2]
Niewiem czy to ma jakis sens robienie tego w ten sposob czy nie, ale zawsze to mniej miejsca zawalone w rekordzie smile.gif


--------------------
Warsztat: IIS 6.0 | PHP 4.3.10 && 5.0.3 | MySQL 4.1.9 | Smarty 2.6.7 | PEAR | EditPlus 2
Produkcja: FlipTiM
Go to the top of the page
+Quote Post
switch
post 20.01.2004, 01:56:12
Post #6





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 19.08.2003

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


Jeżeli chcesz oprzeć zbieranie użytkowników o bazę danych, to problem jest banalny. Tworzysz w bazie te 5 dodatkowych pól z nazwami działów do ,których chcesz dopuścić. Jak rejestrujący zaznaczy wybrane pole to podczas tworzenia jego konta w bazie zapisze się w tym polu np YES a te, które nie zazanczy będą NO. Teraz jak się będzie logował, to system go puści do tych działów gdzie ma w bazie danych zapisane YES przy rejestracji. I tyle
Go to the top of the page
+Quote Post
bumelang
post 20.01.2004, 14:54:10
Post #7





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 30.11.2003

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


A nie prościej po prostu zrobić tabelę
[sql:1:751a9410cb]CREATE TABLE uprawnienia (
id_uzytkownika INTEGER,
id_sekcji INTEGER
);[/sql:1:751a9410cb]
Może prościej, to za dużo powiedziane, ale na pewno dużo bardziej rozsądnie pod kątem dalszej rozbudowy. Można też robić wiele różnych ciekawych rzeczy, np. id_uzytkownika zastąpić id_grupy, itp.
Go to the top of the page
+Quote Post
stach
post 21.01.2004, 00:15:37
Post #8





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 15.02.2003
Skąd: Ziemia

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


Cytat
Może prościej, to za dużo powiedziane, ale na pewno dużo bardziej rozsądnie pod kątem dalszej rozbudowy. Można też robić wiele różnych ciekawych rzeczy, np. id_uzytkownika zastąpić id_grupy, itp.


Wszystko i tak w sumie zalezy od tego czy potem z 5 zezwolen nie zrobi Ci sie 100. Napoczatku mojego projectu myslalem ze zezwolenia do samych dzialow wystarcza, ale potem okazalo sie ze trzeba zrobic zezwolenia do podzialow a na koncu ze jeszcze odzielne dla kazdej funkcji podzialu. Ostatecznie uprawnienia do samych dzialow odpadly smile.gif Lepiej odrazu zrobic cos co bedzie dzialac na duza ilosc niz robic 3x ta sama funkcje. I know lenistwo potrafi duzo nauczyc biggrin.gif (Ale tez terminy czasowe).


--------------------
Warsztat: IIS 6.0 | PHP 4.3.10 && 5.0.3 | MySQL 4.1.9 | Smarty 2.6.7 | PEAR | EditPlus 2
Produkcja: FlipTiM
Go to the top of the page
+Quote Post
switch
post 21.01.2004, 14:08:52
Post #9





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 19.08.2003

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


To może jeszcze inaczej i dalej idąc tropem "YES, NO", zrobić dla każdego użytkownika dwa pola w bazie danych. W polu YES będa się zapisywac wszystkie działy do których będzie mial dostęp a w polu NO, do których nie ma. Masz wtedy luksus, że nawet jeżeli tych działów przybędzie mechanizm nie bedzie musial być zmieniany. Potem przez pętlę sprawdzisz, z których działów może korzystac po logowaniu i sledząc go na kazdej stronie wpuszczasz do poszczególnych działów. Może kombinuj w tym kierunku... Wtedy przy rejestracji działy, ktore zaznaczy zapiszą się w polu YES a te, które będą niezaznaczone w polu NO.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:06