Ponizej opisane sa sposoby jak pisac kod uzywajac gotowych bibliotek dolaczonych do sugoclan. Ogolnie o budowie skryptow -------------------------- Na poczatku nalezy dolaczyc plik /shared/prepend.php do swojego skryptu. Dolaczane sa biblioteki: Db (baza danych), Template (system szablonow), Upload (uploadowanie plikow), funkcje do pobierania zmiennych GPC. Nastepuje zainicjalizowanie funkcji do obslugi bledow. Pozniej nastepuje uwierzytelnianie uzytkownika, zostaje stworzony globalny obiekt $User, ktorego pozniej mozna uzywac do sprawdzania uprawnien uzytkownikow, czy sa zalogowani etc. Nastepnie sprawdzanie uprawnien jesli uzytkownik znajduje sie w panelu admina (katalog /admin/). Do dyspozycji mamy kilka glogalnych obiektow: $Db - do porozumiewania sie z baza danych. $Page - obiekt szablonu. $User - aktualny uzytkownik. Po przyklady jak powinna wygladac struktura aplikacji, system nazewnictwa, jak korzystac z funkcji, bibliotek, szablonow - wystarczy poprzegladac zrodla. System szablonow ---------------- Korzystanie z systemu szablonow nie jest konieczne. Nalezy przemyslec czy warto z niego skorzystac, gdyz ma to swoje zalety: - oddzielna przestrzen nazw dla zmiennych z szablonu, mozna uniknac wielu kolizji, gdy aplikacja sie rozrasta. - cale wyjscie jest buforowane, dopiero gdy aplikacja sie wykona html zostanie wyswietlony uzytkownikowi, zaleta tego rozwiazania mozna docenic gdy np w srodku aplikacji wystapi jakis blad php, caly layout strony sie zepsuje, fatalnie to wyglada i nie mozna juz na to nic poradzic, ale gdy uzywamy buforowania mozemy uzytkownikowi wyswietlic przyjazny komunikat albo przekierowac go na inna strone (zakladajac ze zdefiniowalismy wlasna procedure obslugi bledow). - oddzielamy logike aplikacji od warstwy prezentacyjnej, kod staje sie latwiejszy w utrzymaniu, zmiany w jednej z warstw nie powoduja zmian w drugiej warstwie. Rozwazmy na przyklad kwestie uaktualniania skryptow do nowszej wersji. Zalozmy ze zostaly wprowadzone marginalne zmiany w module newsow (index.php) tylko w logice aplikacji. Jezeli uzytkownik wprowadzal juz zmiany w wygladzie wyswietlania newsow, to przy uaktualnianiu bedzie znow musial edytowac dany plik i wprowadzac te zmiany raz jeszcze. Gdy zastosujemy szablon, wystarczy ze uzytkownik po uaktualnieniu nadpisze plik szablonu wlasnym szablonem ze zrobionymi juz wczesniej zmianami. Dokumentacja do klasy Template: /shared/docs/Template.html Zapytania do bazy danych ------------------------ Wszelki kontakt z baza powinien nastepowac za pomoca obiektu $Db. Ze wzgledow bezpieczenstwa nalezy koniecznie uzywac wiazania danych. Nalezy pamietac ze zmienne GPC sa pozbawione automatycznego slashowania, ktore jest zabezpieczeniem przed hackowaniem sqla. Jezeli nie korzystasz z mechanizmu wiazania danych, musisz kazda zmienna ktora wtracasz do zapytania przerobic funkcja addslashes(). Dokumentacja do biblioteki Db: /shared/docs/Db.html (po angielsku). Zmienne GPC ----------- Do pobierania tych zmiennych sluza 3 funkcje: get(), post(), cookie() Dokumentacja do funkcji GPC: /shared/docs/var.html (po angielsku).