Jump to content
php.lv forumi

Problēma ar funkciju


vgclv

Recommended Posts

Sveiki, nekādi netieku galā ar sasāpējušos problēmu,

Lieta tāda. ka šīs 3 funckijas... palīdz ar attiecīgo user ID piekļūt kontrolpanelim...

 

Bet darobojas man tikai pirmā admin.

// Pārbauda vai lietotājs ir admins
function admin(){
	if(login()){
	$mid = mysql_real_escape_string($_COOKIE['member_id']);
	$qwery = mysql_query("SELECT member_group_id FROM ".prefx."members WHERE member_id = '$mid' AND member_group_id = '4'") or die(mysql_error());
    if(mysql_num_rows($qwery)==1){
		return true;
		}else{
		return false;
		}
	}
}
// Pārbauda vai lietotājs ir moderators
function moderator(){
	if(login()){
	$mid = mysql_real_escape_string($_COOKIE['member_id']);
	$qwery = mysql_query("SELECT member_group_id FROM ".prefx."members WHERE member_id = '$mid' AND member_group_id = '6'") or die(mysql_error());
    if(mysql_num_rows($qwery)==1){
		return true;
		}else{
		return false;
		}
	}
}
// Pārbauda vai lietotājs ir redaktors
function redactor(){
	if(login()){
	$mid = mysql_real_escape_string($_COOKIE['member_id']);
	$qwery = mysql_query("SELECT member_group_id FROM ".prefx."members WHERE member_id = '$mid' AND member_group_id = '9'") or die(mysql_error());
    if(mysql_num_rows($qwery)==1){
		return true;
		}else{
		return false;
		}
	}
}

Varbūt šajā koda daļā kkas jāpaloba/ jāpievieno, lai ACP būtu pieejams tām 3 member_id grupām kas ir funkcijās.......

<?php if(admin()){ ?>(<a href="http://localhost/admin/" style="color:#000;">ACP</a>)<?php } ?></div>
Link to comment
Share on other sites

ACP linku parāda, bet kad jāpieslēdzas izmet ka lapa neeksistē :)

http://localhost/admin/- index.php nav vēl kaut kādas papildus pārbaudes (tipa ka tikai admin var piekļūt) - jo savādāk tas ir kā zīlēt kafijas biezumos ...

Kas notiks, ja lietotājs savā pārlūkā nomainīs kūkiju member_id uz citu id?

Tas neatrisina viņa patreizējo problēmu, protams, lietderīgi ir norādīt uz nepilnībām. Par to lai viņš domā kad : "Shit happens"

Link to comment
Share on other sites

ACP linku parāda, bet kad jāpieslēdzas izmet ka lapa neeksistē :)

http://localhost/admin/- index.php nav vēl kaut kādas papildus pārbaudes (tipa ka tikai admin var piekļūt) - jo savādāk tas ir kā zīlēt kafijas biezumos ...

Kas notiks, ja lietotājs savā pārlūkā nomainīs kūkiju member_id uz citu id?

Tas neatrisina viņa patreizējo problēmu, protams, lietderīgi ir norādīt uz nepilnībām. Par to lai viņš domā kad : "Shit happens"

 

 

Paldies viss sanāca, tiešām bij vēlviena pārbauda iekš index.php

 

Un ja arī kāds tiks iekšā nomainot ID iekš cookies tad viņš neko vairāk kā pievienot/izdzēst dažas bildes nevarēs :)

Edited by vgclv
Link to comment
Share on other sites

+ ja gribi uzlabot kaut nedaudz kodu, tad iznes šo daļu atsevišķā funkcijā:

if(login()){
	$mid = mysql_real_escape_string($_COOKIE['member_id']);
	$qwery = mysql_query("SELECT member_group_id FROM ".prefx."members WHERE member_id = '$mid' AND member_group_id = '4'") or die(mysql_error());
    if(mysql_num_rows($qwery)==1){
		return true;
		}else{
		return false;
		}
	}

Funkcijai ir divi parametri - member id un group_id.

 

Funkciju nosauc tā - function isMemberIngroupd($memberId, $groupId);

 

Tālāk vari izlabot vecās funkcijas:

function isAdmin(){
  return isMemberInGroup($_SESSION['mid'], 4);
}

utt...

 

Attiecīgi, ja tev tagad būs kaut kas jāmaina, tad tas nebūs jādara 3 vietās, bet gan tikai 1 vietā.

 

 

Atceries vienu no SVARĪGĀKAJIEM noteikumiem - DONT REPEAT YOURSELF (jeb DRY)

Tiklīdz tu raksti/kopē vienu un to pašu kodu divās vai vairāk vietās - IZNES TO KODU ATSEVIŠĶĀ METODĒ/FUNKCIJĀ!

 

Piekopjot šo vienkāršo principu, tavs kods būs 10x labāks un 10x mazāk tiks pieļautas kļūdas.

 

+ kods būs īsāks, protams

Link to comment
Share on other sites

 

Un ja arī kāds tiks iekšā nomainot ID iekš cookies tad viņš neko vairāk kā pievienot/izdzēst dažas bildes nevarēs :)

 

 

Neesi tik naivs. Pats neticēsi, cik daudz var izdarīt.

It īpaši, ja, kā pats pieminēji, tiek pie dzēšanas opcijas kāds, kuram nevajadzētu.

Link to comment
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...