Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: system kontroli serwisu
Forum PHP.pl > Forum > PHP
andycole
Witam,

Jestem jeszcze przed startem pisania kodu dla mojego serwisu pilkarskiego (po raz pierwszy mam zamiar uzyc klas) i w zwiazku z tym mam troche pytan do bardziej doswiadczonych ludzi - BTW czytam to forum od 2-3 dni w poszukiwaniu jakiegos optymalnego rozwiazania, ale nie moge nic znalezc.

Konkrety. Chce stworzyc dwa glowne pliki index.php (ogolnodostepna strona) i admin.php (panel admina). W jaki sposob najlepiej sprawdzac wartosc danego parametry w $_GET [] i na podstawie jego ladowac odpowiednie moduly do kontentu jednego z tych dwoch plikow. Dodatkowo chcialbym zeby na dole kazdej podstrony (tej w index.php) byl link do edycji tego modulu w admin.php (o ile user jest zalogowany i ma prawo edycji tego moduly w panelu admina).

Przykladowo user (zalogowany redaktor) czyta newsa. Na dole wyswietla sie link: edytuj tego newsa -> przekierowanie do adimin.php/newsy/edytuj/tytul_newsa czyli do konkretnej podstrony gdzie newsa zedytuje....


Kontrole dostepu chcialbym zrobic oparta o taki schemat bazy danych:

UZYTKOWNICY (U):
-IdUzytkownika
-...
-IdGrupy


GRUPY (G):
-IdGrupy
-NazwaGrupy
-IdAkcji

AKCJE (A):
-IdAkcji
-Nazwa

User moze byc w wielu grupach, a grupa moze zawierac wiele akcji.


STRUKTURA:
-Tytul
-Opis
-Skrot
-Dostep
-Level
-Rodzic

Wczytalbym zmienna z adresu, wyszukalbym w bazie odpowiedniego rekordu (tego ktorego pole Skrot zawiera zmienna wczytana z $_GET []). Jak juz znajdziemy odpowiedni rekord stworzymy na jego podstwie obiekt. Nazywalby sie on np Page. W nim mialbym zawarte dane dotyczace tytulu danej podstrony, opisu i dostepu. Jednoczesnie, tworzylbym obiekt User. Tam mialbym m.in. dane dot dostepu (tzn id akcji jakie moze wykonywac - akcje te przyporzadkowane bylyby do danych rekordow w tabeli STRUKTURA. No i jezeli dana akcja ze STRUKTURA zawiera sie w liscie akcji mozliwych do wykonania przez usera tzn ze ma dostep do tego modulu i wyswietla jemu sie link do edycji na dole lub panel admina. Napisalem "lub", bo chcialbym jakos tak to sprytnie poustawiac, ze np terminarz na stronie a edycja terminarza w panelu z poziomu adresu roznia sie tylko na poczatku, czyli admin.php zamiast index.php. Tak wiec wracajac do sprawdzania dostepu nie ma znaczenia czy sprawdzamy to czy user ma miec wyswietlony link w index.php..... czy ma uzyskac dostep juz do strony w admin.php......

Serwis docelowo moze obslugiwac do 20 000 uniq dziennie, a lezy na home.pl w promocji poki co, wiec nie moge odwalic zbyt duzej zamuly, bo mnie userzy i admini wysla na ksiezyc tongue.gif Wlasnie, serwis ma byc mozliwie jak "najlzejszy". Jak ma sie wiec do tego sama idea tabeli STRUKTURA? Na kazdej podstronie musze ja przeszukac... Macie moze jakies inne sposoby przypisania akcji do danej podstrony? Myslalem zeby przyporzadkowac korzeniowi drzewa (czyli rekordowi ktorego rodzic=0) np akcje doAll ktora zawieralaby wszystkie akcje. Tzn admin mialby dostep do korzenia, wiec dzieki dziedziczeniu mialby dostep do wszystkiego. Zwykly newsman mialby dostep dopiero do jakiegos modulikuna 3 poziomie (AddNews na przyklad). Nie wiem, mam metlik w glowie. Potrzebuje jakis sprawdzonych patentow.

Aaa chcialbym jeszcze zrobic licznik online, czyli ile osob oglada serwis teraz i liste tych osob. Kiedys zrobilem to tak:

Przy kazdym wejsciu na podstrone sprawdzac czy user (zarejestrowany) jest w tabeli ONLINE, jezeli tak to odswiezamy czas wygasniecia jego aktywnosci na stronie, jezeli nie - dodajemy nowy rekord. Dla gosci to samo - kompy identyfikowalem po agent+ip. Czas aktywnosci ustawialem na 5 min. Chwilami mialem po 300 osob online. No i baza danych dostawala zadyszki. Macie moze jakies inne sposoby? Operowanie na plikach?


Kolejne pytanie. Jakiego typu klasy nadaja sie najbardziej na singleton?
Zarzadzanie baza danych?
Informacje o stronie?
Dane o userze?


Kolejne pytanie, tym razem dotyczace "przyjaznych URL'i":

Wiem, ze trzeba ustawic to przez mod_rewrite, ale intryguje mnie sposob czytania zmiennych z $_GET []. Zalozmy ze mamy 2 adresy:

index.php?modul=sezon0708&cmd=terminarz&id=123
index.php?modul=uzytkownicy&id=123

W linku pierwszym paramtery id odpowiadajacy za wskazanie odpowiedniego rekordu w bazie danych jest paramterem trzecim, natomiast w drugim linku jest parametrem drugim. Czy da sie napisac jakas uniwersalna funkcje/klase (? watpie w zasadnosc pisania az klasy), ktora dawalaby mi pewnosc ze ten argument jest na pewno argumentem, ktorego sie spodziewam?

Ufff, ale sie napisalem. Mam nadzieje, ze rozwiejecie chociaz niektore z moich watpliwosci/problemow.

Pozdrawiam serdecznie
andycole
Ludvik
Co do systemu autoryzacji, to pisałem o tym na swoim blogu. Przemyśl wykorzystanie ról i parametrów, z tym można zrobić praktycznie wszystko. Symfony też używa ról, ale bez parametrów.

Przesyłając dane metodą GET nie zwracasz uwagi na ich kolejność, jako że są to pary klucz-wartość, do których odwołujesz się po kluczu. Znowu odwołam się do symfony - tutaj masz wyjaśnione, jak wygląda routing w tym frameworku.
andycole
co do $_GET. Nie bedzie wazna kolejnosc nawet jak zmienie te adresy na:

index/sezon0708/terminarz/123
i
index/uzytkownicy/123

questionmark.gif
Ludvik
To już nie posługujesz się zmiennymi przekazanymi przez GET, tylko odczytujesz dane z PATH_INFO.
Exek
a po co pisać od nowa frameworka? winksmiley.jpg Użyj symfony, czeka Cię ciężka droga wgryzania się w niego... ale ja używam i jestem zachwycony.
andycole
Tak, wiem ze przez PATH_INFO, ale chodzi mi o to skad mam wiedziec czy np ID jest 2 czy np 3 parametrem? Rozumiem ze dany parametry ma byc caly czas na jednej pozycji?

A co jezeli tak jak mowilem ten sam paramtr w jednym adresie jest ustawiony na pozycji np 4:

terminarz/archiwum/sezon0506/182

a w innym na pozycji 2:

newsy/193

Co do frameworka Symfony. Mysle, ze sprobuje smile.gif macie jakies fajne strony/blogi na jego temat?
Ludvik
Napisałeś ścieżki do dwóch zupełnie innych akcji, które przyjmują różne parametry. Są dwa podejścia do tego:
  1. Określona kolejność parametrów
  2. Łączenie parametrów w pary np. /article/id/8/page/2
Pierwsze z nich jest bardziej eleganckie i zazwyczaj je się stosuje.

http://www.symfony-project.com - tam masz całą dokumentację, forum, weblog, adresy do blogów itd...
andycole
Witam,

Mam konto na home.pl - nie mam dostepu do wiersza polecen, wiec z symfony nici? Czy jest moze inny sposob na jej zainstalowanie?

Sa jakies inne frameworki, ktorych instalacji ogranicza sie np tylko do skopiowania plikow?

Pozdrawiam
Ludvik
Symfony możesz spokojnie skonfigurować na localhoście, a potem przenieść wszystkie pliki na home.pl. Trzeba tylko zdabać o to, żeby wszystkie ścieżki były poprawne.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.