vgclv Posted December 30, 2014 Report Share Posted December 30, 2014 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> Quote Link to comment Share on other sites More sharing options...
zeCode Posted December 30, 2014 Report Share Posted December 30, 2014 <?php if( admin() || moderator() || redactor() ){ ?>(<a href="http://localhost/admin/" style="color:#000;">ACP</a>)<?php } ?></div> Quote Link to comment Share on other sites More sharing options...
codez Posted December 30, 2014 Report Share Posted December 30, 2014 Kas notiks, ja lietotājs savā pārlūkā nomainīs kūkiju member_id uz citu id? Quote Link to comment Share on other sites More sharing options...
vgclv Posted December 30, 2014 Author Report Share Posted December 30, 2014 <?php if( admin() || moderator() || redactor() ){ ?>(<a href="http://localhost/admin/" style="color:#000;">ACP</a>)<?php } ?></div> ACP linku parāda, bet kad jāpieslēdzas izmet ka lapa neeksistē :) Quote Link to comment Share on other sites More sharing options...
Kavacky Posted December 30, 2014 Report Share Posted December 30, 2014 Kas notiks, ja lietotājs savā pārlūkā nomainīs kūkiju member_id uz citu id? Tad lietotājs noteikti māk Scalu un ir automātiski elevējams par adminu|moderatoru|redaktoru. Quote Link to comment Share on other sites More sharing options...
vgclv Posted December 30, 2014 Author Report Share Posted December 30, 2014 Tad lietotājs noteikti māk Scalu un ir automātiski elevējams par adminu|moderatoru|redaktoru. Bet vienalga man nedarbojas :) Quote Link to comment Share on other sites More sharing options...
zeCode Posted December 30, 2014 Report Share Posted December 30, 2014 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" Quote Link to comment Share on other sites More sharing options...
vgclv Posted December 30, 2014 Author Report Share Posted December 30, 2014 (edited) 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 December 30, 2014 by vgclv Quote Link to comment Share on other sites More sharing options...
briedis Posted December 30, 2014 Report Share Posted December 30, 2014 Nu vismaz neglabā cepumā to ID, bet gan iekš $_SESSION. Tad nevarēs tik vienkārši pamainīt to ID. Quote Link to comment Share on other sites More sharing options...
briedis Posted December 30, 2014 Report Share Posted December 30, 2014 + 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 Quote Link to comment Share on other sites More sharing options...
aaxc Posted December 30, 2014 Report Share Posted December 30, 2014 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. 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.