Vecteevs Posted August 18, 2011 Report Share Posted August 18, 2011 Sveicināti, kā jau parasti nomoka problēma un vēršos pēc palīdzības. Tātad ir lietotāju tabula ar 4 lietotāju grupām 1. user 2. moderator 3. admin 4.owner šie lauki datubāzē ir kā enum. man vajag izdarīt tā lai admins var aplūkot to ko redz moderators un useris, savukārt moderators var darīt tikai to ko useris mēģināju ar if/else kaut kā nesanāk. varēju tikai konkrētās klases darbības veikt cerams ka sapratāt manu problēmu Quote Link to comment Share on other sites More sharing options...
briedis Posted August 18, 2011 Report Share Posted August 18, 2011 Nu nu, parādi kādus if'us biji sarakstījis? :) Quote Link to comment Share on other sites More sharing options...
Vecteevs Posted August 18, 2011 Author Report Share Posted August 18, 2011 if($power == 'USER'){ echo 'useris'; }elseif($power == 'MODERATOR'){ echo 'moderators'; }elseif($power == 'ADMIN'){ echo 'admins'; }elseif($power == 'OWNER'){ echo 'owneris'; } ..ja klase ir ADMIN tad man parāda vienkārši "admins" nevis useris, moderators, admins.. Varbūt jādara kā savādāk? Quote Link to comment Share on other sites More sharing options...
briedis Posted August 18, 2011 Report Share Posted August 18, 2011 (edited) Kas liedz? if($power == 'USER'){ echo 'useris'; }elseif($power == 'MODERATOR'){ echo 'moderators'; echo 'useris'; }elseif($power == 'ADMIN'){ echo 'admins'; echo 'moderators'; echo 'useris'; }elseif($power == 'OWNER'){ echo 'owneris'; echo 'admins'; echo 'moderators'; echo 'useris'; } :) Edited August 18, 2011 by briedis Quote Link to comment Share on other sites More sharing options...
Vecteevs Posted August 18, 2011 Author Report Share Posted August 18, 2011 Tāda ideja man arī bija, bet ja man pie katras grupas ir funkcijas un atrodas kāda kļūda tad jālabo ir visos. Bet ja savādāku variantu nav tad vien būs jaizmanto šis. Quote Link to comment Share on other sites More sharing options...
codez Posted August 18, 2011 Report Share Posted August 18, 2011 (edited) To sauc par acl. Bet pavisam vienkāršā gadījumā vari glabāt int vērtību no 1-4, 1.useris - 4.owneris un if ($power>=1) { //sho var darīt visi } if ($power>=2) { //sho var darīt moderātors un krutāki } if ($power>=3) { //sho var darīt admins un krutāki } Edited August 18, 2011 by codez Quote Link to comment Share on other sites More sharing options...
Vecteevs Posted August 18, 2011 Author Report Share Posted August 18, 2011 Okey, darīšu kā tu saki codez. Paldies! :) Quote Link to comment Share on other sites More sharing options...
KillerBean Posted August 18, 2011 Report Share Posted August 18, 2011 (edited) Pareizāka pieeja ir leveli glabāt, kā INT.. ir ērtāk. Bet vienmēr jau vēl ir citi cikli, nevis tikai if: switch ($x) { case 'owneris': echo 'owneris'; case 'admins': echo 'admins'; case 'moderators': echo 'moderators'; case 'useris': echo 'useris'; }; Edited August 18, 2011 by KillerBean Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted August 19, 2011 Report Share Posted August 19, 2011 (edited) Bet vienmēr jau vēl ir citi cikli, nevis tikai if: switch ($x) { case 'owneris': echo 'owneris'; case 'admins': echo 'admins'; case 'moderators': echo 'moderators'; case 'useris': echo 'useris'; }; šādi darīt būtu pareizāk, nevis N-tie IF/ELSE tikai jābūt arī defolt varjantam, un pēc katra CASE jābūt break; , savādāk pārbaude turpināsies, kamēr atdursies pret defolto un to arī izpildīs switch ($x) { case 'owneris': echo 'owneris'; break; case 'admins': echo 'admins'; break; case 'moderators': echo 'moderators'; break; case 'useris': echo 'useris'; break; default: echo 'Errors, ett.....'; // var arī pielikt exit; lai pturētu tālāko koda drbību ->shajā gadījumā itkā tas būtu pat pareizi // vai arī echo 'useris'; }; Edit: bet vispār skaties kas tev tur jaizvada, ja Includes tad ar case, ja jaizvada kāda forma, tad iespējams ērtāks ir codez dotais varjants Edited August 19, 2011 by Grey_Wolf Quote Link to comment Share on other sites More sharing options...
daGrevis Posted August 19, 2011 Report Share Posted August 19, 2011 Tev vajag četrus līmeņus? Datubāzē glabā tinyint. 200 ir īpašnieks, 150 ir admins, 100 ir moderators, 50 ir lietotājs. Tāda sistēma Tev ļaus pieveinot līdz pat 49 jauniem līmeņiem pirms vai pēc jebkura. Tad sataisi konstantes visiem... define('GROUP_ADMIN', 150); define('GROUP_USER', 50); Quote Link to comment Share on other sites More sharing options...
v3rb0 Posted August 19, 2011 Report Share Posted August 19, 2011 (edited) vēl vari glabāt bitmaskas. pieņem ka useris = 1; moderators = 2; admins = 4; owneris = 8; ownerim kurš ir arī useris, moderārtors un adminis bitmaska būs useris | moderators | admins | owneris = 15 un dotais useris var redzēt to, ko var redzēt adminis ja (bitmaska & admins) > 0 Edited August 19, 2011 by v3rb0 Quote Link to comment Share on other sites More sharing options...
daGrevis Posted August 19, 2011 Report Share Posted August 19, 2011 Interesantu domu pasviedi, v3rb0! Quote Link to comment Share on other sites More sharing options...
spainis Posted August 19, 2011 Report Share Posted August 19, 2011 enums DB glabājas kā skaitlis tāpēc pie select'a vienkārši <enum lauks> + 0 dabūsi enum skaitlisko vērtību, tik jāatceras, ka enum laukus derētu sakārtot augošā secībā pēc tiesībām jo to atslēgas ar ir augošā secībā Quote Link to comment Share on other sites More sharing options...
Vecteevs Posted August 19, 2011 Author Report Share Posted August 19, 2011 Kā tad īsti ir ar to bitmask? manuālī īsti nesapratu kā tur domāts Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted August 19, 2011 Report Share Posted August 19, 2011 (edited) Kā tad īsti ir ar to bitmask? manuālī īsti nesapratu kā tur domāts primitiivi apskaidrojot: 1 baits sastav no 8 ' 0' vai ' 1' attieciigi : vari sagalabat zinamu daudzumu datus piem 10100010 kur katrs vieninieks buus true, savukart 0 false taa kaa tas ir binars kods tad to var paarverst par skaitli ( saja gadijumaa tas buus 162 ) tas taa ljoti primitiivi .. protams bitoperacijas neizmanto visus 8, bet tika dalju ( tiek rezerveta dalja bitu), bet nu tas jau ir cits satasts Edited August 19, 2011 by Grey_Wolf Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.