Jump to content
php.lv forumi

Lietotāju pakāpes


Recommended Posts

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 by iall
Link to post
Share on other sites

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.

Link to post
Share on other sites
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 by iall
Link to post
Share on other sites

Es ne ne 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.

Link to post
Share on other sites

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

Link to post
Share on other sites

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 by iall
Link to post
Share on other sites

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.

Link to post
Share on other sites

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 by iall
Link to post
Share on other sites
  • 1 year later...

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 by thesnarkie
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...