Zabrana pristupa direktnim linkom
Imam problem sledece prirode. Napravio sam 2 naloga za aplikaciju (korisnicki i administratorski). Oba naloga imaju svoj meni, znaci ako se loguje obicni korisnik vidi se jedan meni, ako se loguje administrator vidi se drugi meni i naravno to sve resio preko sesija. E sad kako ja da zabranim nekome ko nema pravo da direktno preko url pristupi nekom linku iz menija za koaj nema ovlastenja??? Da uprostim, ni jedan korisnik, pa ni onaj logovani, ne moze da vidi stranicu "registracija.php" koju moze da vidi samo administrator e sad ja treba da zabranim da do te stranice ne moze da se dodje ako neko ukuca http://mojsajt.com/registracija.php. Nadam se da me neko razumio.
|
Prilikom ucitavanja stranice registracija.php potrebno je ispitati vrednost koja je setovana u sesiji koji je korisnik trenutno logovan, ako je korisnik pripadnik grupe koja moze da vidi stranicu onda tu stranicu treba prikazati a ako ne pripada grupi koja moze da vidi stranicu onda ga treba redirektovati na stranicu za logovanje ili prikazati poruku da korisnik nema prava da pristupi toj stranici.
|
... a kako to mogu da vide različiti meni?
Kažeš da je to rešeno preko sesija... isto tako možeš da ispitaš da li želiš da dopustiš korisniku pristup nekoj stranici. Ako utvrdiš da se dogodila "zabranjena stranica" podesićeš da za se za ispis koristi šablon za grešku, ili iskoristiš redirekciju zahteva na neku drugu stranicu (koju već odabereš prilikom dizajna ponašanja aplikacije). |
Evo kako preko sesija: Imam 3 .inc fajla u zavisnosti ko se logovao prikazujem jedan od njih. U tim .inc fajlovima je meni. U bazi prilikom registracije dodjeljujem korisniku tip i pamtim ga u bazi, A je administrator,K je korisnik koji ce moci da se loguje. E sad ovo sve fino fercera dok ne dodje neka osoba X i kaze http://mojsajt.com/registracija.php a za njega je namjenjen meni 'mainmenu.inc' u kome nema registracija.php no direktnim pristupom preko linka on moze da otvori tu stranicu registracija.php.
Kôd:
<?php |
Samo dodaj na pocetku stranice registracija.php proveru sesije koji je korisnik, ako je odgovarajuci korisnik prikazi stranicu, ako nije samo ga redirektuj da se loguje ili mu prikazi poruku da nema pravo da vidi stranicu.
|
PHP kôd:
|
Prosto, iskoristi taj kod na početku registracija.php koji će uraditi die() ili redirekciju za slučaj da ulogovani korisnik nije Admin.
|
Mislim da nisi pazljivo procitao sta ti navode ljudi u prethodnim postovima.
U sustini na samom pocetku stranice pre bilo kakve obrade kazes ovako nesto: if (!isset($_SESSION['tip']) || $_SESSION['tip'] !== 'A') header("Location: index.php"); Znaci ako nema setovanu sesiju ili ako mu vrednost $_SESSION['tip'] nije A (nije admin), posalji ga na index.php. Ovo ti je samo jedan od nacina, ne moras uopste da ga saljes bilo gde i sl. Cim detektujes da nije admin ne dozvoljavas da se izvrsi dalji deo koda na toj stranici. EDIT: Sada sam video da sam napisao isti code ko japan :) |
Ako dopuštaš direktan pristup stranici, onda na njoj moraš i da proveravaš.
registracija.php Kôd:
... |
Citat:
|
'Tip korisnika' (admin, korisnik, moderator, whoever...) je obicno definiran nekom kolekcijom prava koja ima (READTHIS, WRITETHAT, VIEWTHIS, CREATETHAT). U nacelu, svaki objekt u aplikaciji (stranica, menu, menuitem, sto god) napravis tako da zahtijeva da korisnik koji mu pristupa ima odredjeno pravo.
Npr. ako pristupa menuItemu 'administracija' onda taj menuItem ima na sebi flag 'administracija' i provjerava da li user ima u kolekciji prava 'administracija'. Ista je stvar i za bilo koji page, businessLayer metodu i bilo sto drugo. |
Vreme je GMT +2. Trenutno vreme je 14:40. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.