DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > PHP
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

PHP PHP aplikacije, Smarty, PEAR

Odgovori
 
Alati teme Način prikaza
Staro 28. 04. 2008.   #1
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default ACL liste i select na bazi?

Pravim klasican ACL sistem, baziran na ARO I ACO stablima (tj. role i konteksti), i to sve fino radi kad treba proveriti privilegije za odredjenu jednu akciju (tipa edituj taj i taj item i sl.).

Medjutim u problemu sam kako da ovo efikasno povezem sa SELECT-om veceg broja recorda odjednom, tipa treba dohvatiti 100 proizvoda koje korisnik ima pravo da vidi (a svaki proizvod moze da bude u vise kategorija i podkategorija, i sam korisnik moze da pripada u vise rola/grupa, a svaka od njih moze da ima svoj set pravila za neku od datih rola). Hteo bih da minimizujem broj upita, ali da ipak izbegnem hardkovanje privilegija u kodu po svaku cenu, vec da sve ide preko ACL i da bude maximalno univerzalno (ali onda se skroz iskomplikuje)...

Jel imate neke savete kako to resiti najlakse? Ne treba mi gotovo resenje, nego cisto predlog algoritma kako je najbolje sklopiti takav upit?
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Staro 29. 04. 2008.   #2
skaarj
profesionalac
Qualified
 
Datum učlanjenja: 15.09.2006
Lokacija: Zemlja cuda
Poruke: 114
Hvala: 11
3 "Hvala" u 3 poruka
skaarj is on a distinguished road
Default

Ja bih u tom slucaju vrsio upite koji oznacavaju sta korisnik moze da uradi u sistemu prilikom logovanja i time formirao niz id-ova koje korisnik moze da koristi na ovaj ili onaj nacin (tacna struktura zavisi od toga sta ti treba).
Na stranici samo pitas da li je id datog itema u listi koju si formirao.

Znam da postoje mane ovakvog pristupa ali mi se cini mnogo efikasnijim nego da za vrsis upite za svaki pojedinacni item ili vise stotina istih ako ti treba listing neke grupe ili nesto slicno...
skaarj je offline   Odgovorite uz citat
Staro 29. 04. 2008.   #3
cvele
Banned
Knowledge base
 
Avatar cvele
 
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
cvele ima spektakularnu aurucvele ima spektakularnu auru
Default

Off Topic:
sorry nemogu da odolim...

SFRJ Jugoslavija
cvele je offline   Odgovorite uz citat
Staro 29. 04. 2008.   #4
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

Off Topic:
a? ne razumem?
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Staro 30. 04. 2008.   #5
jablan
VD IT Direktora
Invented the damn thing
 
Avatar jablan
 
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
jablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamen
Default

A šta te sprečava da napraviš jedan masniji JOIN, eventualno uz pomoć vjuova?

Off Topic: Ma ona fora: u ACL već imaš "Liste"... Na foru "LED Dioda"...
__________________
blog
jablan je offline   Odgovorite uz citat
Staro 30. 04. 2008.   #6
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

Off Topic:
Aaaaa, /me slow


Sto se tice JOIN-a, kako tacno mislis, nad kojim podacima bi radio JOIN? Ja odradim Join nad ACL tabelama i onda prolaskom kroz dobijeno stablo nadjem konkretan set pravila koja bi mogla da vaze (Deny ili Allow), ali ne umem da pretocim ta pravila u neki WHERE koji ima smisla.

Recimo da imas sledeca pravila (svako sledece ima visi prioritet):
1. Allow svi proizvodi
2. Deny proizvodi za ID IN (1,3,5,7)
3. Allow proizvode (3,4,5)

E sad kako od ovoga napisati WHERE koji ce pravilno dohvatiti prvih 10 proizvoda koje smemo da vidimo? Da postoji samo Allow ili samo Deny ne bi bio problem, ali konkretan zadatak zahteva da postoji i jedno i drugo.

EDIT: ovako kad su sve ID-jevi moglo bi da se prvo napravi presek ID-jeva, pa da se onda uradi jednostavno WHERE id NOT IN (...), ali u realom slucaju mozda ce jedno pravilo da bude vezao za polje Uvoznik, drugo za Datum, pa je onda tesko uraditi presek, sem onako kako je Skaarj predlozio
__________________
Leadership is the art of getting people to want to do what you know must be done.

Poslednja izmena od ivanhoe : 30. 04. 2008. u 00:48.
ivanhoe je offline   Odgovorite uz citat
Staro 30. 04. 2008.   #7
degojs
I'm a PC too.
Wrote a book
 
Avatar degojs
 
Datum učlanjenja: 06.06.2005
Lokacija: Kanada
Poruke: 1.354
Hvala: 82
130 "Hvala" u 89 poruka
degojs će postati "faca" uskorodegojs će postati "faca" uskoro
Default

^Pa čekaj, zašto ti je problem da složiš upit sa drugim poljima - ti uvek gledaš samo ID na kraju (tj. uvek imaš select id.. bilo u glavnom upitu ili ovim ispod a WHERE polje se menja), slično kao ovo gore:

select id from t1
where
1=1 /* include all */
and

/* presek 2. i 3. pravila */
id not in
(
select id from t1 where id in (1,3,5,7)
and id not in (3,4,5)
)


Naravno, ovo gore je bolje napisati pomoću JOINa, čisto performansi radi.

Koliko vidim, imao bi nekoliko šablona koje bi onda složio u jedan upit, samo je zavisno šta ide kojim redom. Ima malo da se cima, nije da nema
__________________
Commercial-Free !!!

Poslednja izmena od degojs : 30. 04. 2008. u 07:12.
degojs je offline   Odgovorite uz citat
Staro 30. 04. 2008.   #8
degojs
I'm a PC too.
Wrote a book
 
Avatar degojs
 
Datum učlanjenja: 06.06.2005
Lokacija: Kanada
Poruke: 1.354
Hvala: 82
130 "Hvala" u 89 poruka
degojs će postati "faca" uskorodegojs će postati "faca" uskoro
Default

U stvari, ako ne grešim, ovo gore još lakše možeš da ukalupiš u neki šablon sa:

select id from t1
where
1=1
and
id not in (1,3,5,7)
or
id in (3,4,5)

Samo obrati na pažnju gde ide AND a gde OR, itd. Naravno, umesto ID stavljaj polje i uslov koji treba.
__________________
Commercial-Free !!!

Poslednja izmena od degojs : 30. 04. 2008. u 07:16.
degojs je offline   Odgovorite uz citat
Staro 30. 04. 2008.   #9
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

ne znam da li ovo zadnje moze da se generalizuje, posto treba ubosti kombinaciju AND i OR koja radi ono sto meni treba, a moguce je jako puno kombinacija Allow i Deny... u svakom slucaju to bi bilo ono sto mi treba, samo moram malo da se podsetim Boolove algebre...
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Staro 30. 04. 2008.   #10
degojs
I'm a PC too.
Wrote a book
 
Avatar degojs
 
Datum učlanjenja: 06.06.2005
Lokacija: Kanada
Poruke: 1.354
Hvala: 82
130 "Hvala" u 89 poruka
degojs će postati "faca" uskorodegojs će postati "faca" uskoro
Default

Jes vala, morao bi malo da probavaš da vidiš ima li neki šablon

A mogao bi i drugačije i naokolo: da napraviš svaki put privremenu tabelu (možda čak u memoriji) i da za nju izvršiš odgovarajuće INSERT i DELETE id-ova.

Npr ako imaš ovako pravila:

1. Allow All: SELECT Id FROM t1 WHERE 1=1 -> i sad te IDjeve INSERTuješ u tu privremenu ("temp") tabelu, ne znam sad koja je sintaksa za MySQL da radi SELECT i INSERT u jednom upitu, verujem da ima, sve baze to imaju

2. Deny 1,4,6: DELETE FROM temp WHERE ID IN (1,4,6)

3. Allow 7,4,3: INSERT INTO temp WHERE ID IN (7,4,3)

I tako redom. I na kraju ti u toj temp tabeli ostanu IDjevi koje trebaš.

E sad, ono prvo pravilo može da povuče dosta ID-jeva, pa možeš malo da optimizuješ logiku pa da ni ne radiš taj prvi upit, već da beležiš šta se uklanja iz skupa svih ID-jeva, itd. U stvari možda ti ni ne treba baza i privremena tabela za to onda, već da radiš sa nizom/kolekcijom/skupovima..?
__________________
Commercial-Free !!!

Poslednja izmena od degojs : 30. 04. 2008. u 22:43.
degojs je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum

Slične teme
Tema Početna poruka teme Forum Odgovori Poslednja poruka
Select box - IE6 stilizovanje Nemanja.Milosavljevic (X)HTML, JavaScript, DHTML, XML, CSS 8 18. 01. 2010. 16:54
Top liste sajtova Marko Medojevic Sva početnička pitanja 0 25. 10. 2007. 18:59
stilizovanje <select> tag-a [nq] (X)HTML, JavaScript, DHTML, XML, CSS 11 24. 06. 2007. 21:55
Select language ... Ivan Opušteno 32 22. 12. 2006. 14:40
sta su zapravo mail liste dee PHP 4 01. 09. 2006. 12:12


Vreme je GMT +2. Trenutno vreme je 20:56.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.