iall Posted March 25, 2008 Report Share Posted March 25, 2008 (edited) Hello , izmeklējos pa gūgli krustām šķērsām par lietotāju pakāpēm. Cik noprotu visa štelle tiek balstīta uz sesijām ,pareizi? Atradu pamācības par reģistrāciju ,ielogošanos un lietotāju pakāpēm ,bet pārāk sarežģīti. Būtu pateicīgs ,ja kāds pasviestu kādu ideju. Atradu ko šādu forumā - http://php.lv/f/index.php?showtopic=8394&a...lietot%C4%81ji* Bija jau aprunāts. Cik noprotu ,tad labāk ir ar "flagiem" ja? Edited March 25, 2008 by iall Quote Link to comment Share on other sites More sharing options...
Delfins Posted March 25, 2008 Report Share Posted March 25, 2008 atkarīgs: - cik sarežģīta sistēma - cik sarežģīti pats proti uztaisīt PS: es par `flagiem` Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted March 25, 2008 Report Share Posted March 25, 2008 Nu, ja gribi pamatīgi to izprast, tad sāc ar Drošības modeļu izpēti. Quote Link to comment Share on other sites More sharing options...
777 Posted March 25, 2008 Report Share Posted March 25, 2008 padalishos ar savu kodu if (defined("iGUEST") || defined("iMEMBER") || defined("iMOD") || defined("iADMIN") || defined("iUSER") || defined("iUSER_RIGHTS") || defined("iUSER_GROUPS")) { die ("Access Violation"); } function getuserlevel($userlevel) { if ($userlevel==0) { return "Viesis"; } elseif ($userlevel==200) { return "Lietotajs"; } elseif ($userlevel==201) { return "Aktivais Lietotajs"; } elseif ($userlevel==300) { return "Moderators"; } elseif ($userlevel==301) { return "Foruma Moderators"; } elseif ($userlevel==302) { return "News-Maker"; } elseif ($userlevel==400) { return "Sys Administrators"; } elseif ($userlevel==401) { return "Administrators"; } } function getusergroups() { $groups_array = array( 0 => "Viesis", 200 => "Lietotajs", 201 => "Aktivais Lietotajs", 300 => "Moderators", 301 => "Foruma Moderators", 302 => "News-Maker", 400 => "Sys Administrators", 401 => "Administrators" ); return $groups_array; } define("iGUEST",$userdata['user_level'] == 0 ? 1 : 0); define("iMEMBER", $userdata['user_level'] >= 200 ? 1 : 0); define("iSUPERMEMBER", $userdata['user_level'] >= 201 ? 1 : 0); define("iCOMMENTMODER", $userdata['user_level'] >= 300 ? 1 : 0); define("iFORUMMODER", $userdata['user_level'] >= 301 ? 1 : 0); define("iMAKERMODER", $userdata['user_level'] >= 302 ? 1 : 0); define("iADMIN", $userdata['user_level'] >= 400 ? 1 : 0); define("iSUPERADMIN", $userdata['user_level'] >= 401 ? 1 : 0); define("iUSER", $userdata['user_level']); datubaze `users` : `user_level` int(5) unsigned NOT NULL default '200', un pec tam if(iMEMBER) { } if(iADMIN) { } u.t.t. Quote Link to comment Share on other sites More sharing options...
iall Posted March 25, 2008 Author Report Share Posted March 25, 2008 (edited) atkarīgs:- cik sarežģīta sistēma Sistēma ļoti vienkārša. atkarīgs:- cik sarežģīti pats proti uztaisīt PS: es par `flagiem` Jo vienkāršāk ,jo labāk! :) 777 - Tas kods nav no php-fusion? Enīvei ,paldies, papētīšu tuvāk. :) Jāmēģina kautkā ar sesijām. Edited March 25, 2008 by iall Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted March 25, 2008 Report Share Posted March 25, 2008 Nevajag "kautkā" - vajag mērķtiecīgi un apdomāti ;) Quote Link to comment Share on other sites More sharing options...
iall Posted March 25, 2008 Author Report Share Posted March 25, 2008 Es ne bū ne bē kā taisīt ,kā piemēram piešķirt lietotājam pakāpi "User" pie reģistrēšanās ,kā nomainīt uz "Moderator". Jāpameklē cītīgāk ,kāds manuālis ,vai kāda ļoti vienkāršā reģistrācijas sistēma ar user access levels. Quote Link to comment Share on other sites More sharing options...
Delfins Posted March 25, 2008 Report Share Posted March 25, 2008 Nu vispirms izlemj, kā taisīsi.. vai vajag grupas, vai vajag sadalīt pa moduļiem un t.t... vai vispār fiksēto sistēmu (777 variants). Konkrēti man bija realizēts: modulis - skripts - user tiesības (summētās no grupām). iespējas bija uzlikt R/W/X (read,write,execute). tālāk no tekošā konteksta izvadīju/neizvadīju buttonus, diseibloju input-laukus... bija dinamiskā forma piesaistīta pie user-permission klases. Viss smuki ģenerējās. (http://php.lv/f/index.php?s=&showtopic=8394&view=findpost&p=68725) Ja pavisam vienkārša sistēma, var taisīt `fiksēto`... dažam labam `abcdef` variants Quote Link to comment Share on other sites More sharing options...
iall Posted March 25, 2008 Author Report Share Posted March 25, 2008 (edited) Skaidrs ,liels paldies. :) Tad sanāk ,ka man jātaisa ar grupām ,pieņemsim ja man ir vairāk par vienu moderatoru? Es centīšos uztaisīt to pašu vienkāršāko variantu. Edited March 25, 2008 by iall Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted March 25, 2008 Report Share Posted March 25, 2008 Ok, izstāstīšu vienkāršu sistēmu: Piešķiram katram lietotājam veselu skaitli: 0 - no access (lietotājam nav tiesību pat apskatīt informāciju) 10 - read only (lietotājam ir tiesības tikai apskatīt) 20 - post (lietotājam ir tiesības pievienot un apskatīt) 30 - moderate (lietotājam ir tiesības arī dzēst/mainīt citu pievienoto informāciju) 40 - administer (lietotājam ir tiesības modificēt (radīt/mainīt/dzēst) citu lietotāju kontus un mainīt arī šo skaitli) Ja lietotājam nav defināets šis skaitlis, tātad uzskatīt, ka tas ir 0. Tālāk, katrai darbībai, ko var veikt lapā piešķir nepieciešamo pilnvaru līmeni: Teiksim, lai atvērtu login lapu, līmenim ir jābūt vismaz 0. Lai varētu apskatīties pēdējo ierakstīto informāciju, jābūt vismaz līmenim 20. Respektīvi veicot kādu darbību, ir jāpārliecinās, vai lietotāja, kas taisās to veikt skaitlis ir lielāks vai vienāds par šai funkcijai definēto minimālo piekļuves skaitli. function lasit(){ define('access_level',10); if(lietotaja_limenis() < access_level){ //tātad lietotājam nav pietiekamas tiesības echo('Piekļuve liegta'); } else { //tātad lietotājam ir pietiekamas tiesības Te ir kods, kas dabū pēdējos ierakstus } } Apmēram tā. Atstarpes starp 0 - 10 - 20 - 30 - 40 var noderēt, jo dažreiz pēkšņi savajagās kādam piešķirt kaut ko pa vidu... Kā jau teicu - šī ir ļoti vienkārša sistēma, kas ir vienkāršots Lattice-based access control izpildījums. Quote Link to comment Share on other sites More sharing options...
iall Posted March 25, 2008 Author Report Share Posted March 25, 2008 (edited) Liels paldies Aleksej ,jāiebūkmarko. :) Laikam nolikšu "lietotāju pakāpes" pie PC uz plauktiņa ,kamēr būšu mazliet advancētāks iekš PHP ,diezgan sarežģīti. Paldies par palīdzību ,topiks ļoti noderēs. :) Edited March 25, 2008 by iall Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted March 25, 2008 Report Share Posted March 25, 2008 Lūdzu :) Ceru, ka palīdzēju. Quote Link to comment Share on other sites More sharing options...
iall Posted March 25, 2008 Author Report Share Posted March 25, 2008 Protams ,ka palīdzēji. Vismaz ieviesi man skaidrību par lietotāju pakāpēm un kā to realizēt. Quote Link to comment Share on other sites More sharing options...
777 Posted March 25, 2008 Report Share Posted March 25, 2008 iall , ne shis kods nav ne no kada php-fusion ... Quote Link to comment Share on other sites More sharing options...
thesnarkie Posted June 20, 2009 Report Share Posted June 20, 2009 (edited) Nu pavisam vienkārš variants: Reģistrējoties automātiski ieliec lietotāju par user (0), bet ja vajag pēc tam datubāzē ieliec 1 (pieņemsim, ka šitais ir mods), 2 (pieņemsim, ka šitais ir admins) un tā tālāk grupu. Pēc tam mājaslapā, kad lietotājs piesakās mājaslapā, sesijā (group) uzstādi viņa lietotājgrupu, kuru tu izvelc no datubāzes. Un tad jau mājaslapā viss skaidrs: if($_SESSION['group']==0) { echo "Sveiks, lietotāj. <br />Tavs Profils<br />Forums"; } if($_SESSION['group']==1) { echo "Sveiks, moderator.<br />Pārskatīt ierakstus<br />Rediģēt ierakstus<br />"; } if($_SESSION['group']==2) { echo "Sveiks, administrator. <br />Kontroles Panelis<br />Lietotāju rediģēšana"; } Tas ir, ja katrai grupai vēlies savādāks. Vari arī savienot un ņemties kā vien gribi: if($_SESSION['group']==0 || $_SESSION['group']==1) { echo "Sveiks, lietotāj. <br />Tavs Profils<br />Forums"; } if($_SESSION['group']==2) { echo "Sveiks, administrator. <br />Kontroles Panelis<br />Lietotāju rediģēšana"; } Vienkārš variants, bet nodomāju ierakstīt. Cik tāds vispār ir drošs, ja tā padomā? Edited June 21, 2009 by thesnarkie 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.