PwS Cieśla Dubiel dokumentacja techniczna

Wydział Elektryczny
Instytut Automatyki i Inżynierii Informatycznej

System zarządzania katalogiem produktów sklepu modelarskiego
Dokumentacja techniczna

Projekt realizowany w ramach zajęć z przedmiotu:
Programowanie w Sieci WWW

Prowadzący zajęcia:
mgr Michał Apolinarski

Informatyka, specjalizacja Bezpieczeństwo Systemów Informatycznych
Semestr VII, rok akademicki: 2011/2012

Kamil Cieśla 88344
Andrzej Dubiel 88347

Spis Treści

Informacje wstępne 3

Zrealizowane części projektu 3

Kategorie produktów 4

Produkty 4

Koszyk 4

Zamówienie 5

Logowanie 5

Podsumowanie 5


Informacje wstępne

Zgodnie z założeniami projektu, strona internetowego Sklepu Modelarskiego jest wykonana w technologii PHP wraz z wykorzystaniem relacyjnej bazy danych MySQL.

Strona została utworzona w oparciu o wzorzec MVC (Model - View - Controler), który znacznie ułatwia programowanie (w tym wprowadzanie zmian/poprawek) oraz sprawia, że kod jest nadzwyczaj przejrzysty oraz poukładany. W osobnych plikach znajdują się funkcje odpowiedzialne za komunikowanie się z bazą danych (PHP+SQL), funkcje kontrolujące i przygotowujące (obrabiające) treść przed jej wyświetleniem (PHP) oraz funkcje odpowiedzialne za prezentowanie treści użytkownikowi (PHP+HTML).

Poniżej znajduje się schemat prezentujący działanie wzorca MVC:

Zrealizowane części projektu

W aktualnej wersji projektu zaimplementowane zostały następujące funkcjonalności:


Kategorie produktów

Kategorie produktów zostały zrealizowane w sposób hierarchiczny (jedne kategorie mogą znajdować się wewnątrz drugich tworząc drzewo kategorii). W bazie danych odpowiada za to atrybut 'parent_id' - gdy atrybut ten posiada wartość 'null' oznacza, że jest jedną z kategorii głównych. Jeśli wartość atrybutu 'parent_id' jednej kategorii jest równa kluczowi 'id' drugiej kategorii, oznacza to, że ta pierwsza jest dzieckiem tej drugiej. Nie ma ustalonego ograniczenia co do liczby potomków kategorii.

Za przygotowanie drzewa kategorii odpowiedzialna jest funkcja 'kategoria', która przyjmuje parametr ID, a zwraca drzewo kategorii w postaci: a) przodkowie wybranej kategorii (jeśli posiada), b) dzieci (nie potomkowie) wybranej kategorii (jeśli posiada).

W ten sposób utworzone drzewo jest przekazywane do funkcji 'prepareHTML', która wywołuje rekurencyjną funkcję 'categories', w której przygotowywany jest cały kod HTML odpowiedzialny za wyświetlenie kategorii użytkownikowi.

Funkcja 'kategoria' przed odwołaniem się do bazy danych sprawdza czy podany parametr jest liczbą oraz czy jest prawidłowym identyfikatorem obiektu klasy kategoria. W przypadku podania nieprawidłowych danych (np. tekst, kod html czy sql) funkcja przerwie swoje działanie.

Produkty

Za wyświetlenie informacji o produkcie odpowiedzialna jest funkcja 'produkt', która przyjmuje parametr ID, a zwraca wszystkie dostępne w bazie danych informacje na temat danego produktu (łącznie z informacjami z innych tabel bazy danych, np. typ silnika, kategoria do której należy itp.).

Przed wywołaniem zapytania do bazy danych funkcja sprawdza czy podany parametr jest liczbą oraz czy jest prawidłowym identyfikatorem obiektu klasy 'produkt'.

Koszyk

Za wszystkie czynności związane z 'koszykiem' odpowiedzialna jest funkcja 'koszyk', która może przyjąć od 0 do 2 parametrów. W przypadku wywołania bez parametrów funkcja wyświetli produkty znajdujące się w koszyku zalogowanego użytkownika.

Gdy funkcja zostanie wywołana z tylko pierwszym parametrem (ID - identyfikator produktu), do koszyka zostanie dodany produkt o podanym ID. Przed wywołaniem zapytania do bazy danych funkcja sprawdza czy podany parametr jest liczbą oraz czy jest prawidłowym identyfikatorem obiektu klasy 'produkt'.

Funkcja wywołana z parametrami ID oraz USUŃ spowoduje usunięcie z koszyka produktu o identyfikatorze równym pierwszemu parametrowi. Jeśli w koszyku nie będzie znajdował się produkt o zadanym ID, funkcja przerwie swoje działanie.

Zamówienie

Funkcja 'zamowienie' odpowiada za składanie zamówień. Po sprawdzeniu czy użytkownik jest zalogowany oraz czy w koszyku znajdują się produkty, generowany jest formularz zamówienia, w którym użytkownik musi podać adres dostawy, formę płatności oraz sposób dostawy. Dwa ostatnie elementy są listami wyboru. Po wysłaniu formularza do serwera pola adresu dostawy (m.in. miasto, ulica, kod pocztowy) przechodzą szczegółową walidację (wykorzystanie wbudowanej w PHP funkcji preg_match). Formularz jest odporny na próby wprowadzenia tagów HTML, XML czy SQL Injection. Do bazy danych zostaną wysłane tylko prawidłowe dane, które nie będą mogły jej uszkodzić.

Logowanie

Formularz logowania po wysłaniu do serwera przechodzi szczegółową walidację po to, aby nie można było wykonać ataku typu SQL Injection.

Hasła użytkowników są zabezpieczone w bazie danych dzięki wykorzystaniu funkcji skrótu SHA wspartej przez tzw. sól.

Podsumowanie

Aplikacja została zaimplementowana w popularnym wzorcu MVC, któremu zawdzięcza przejrzystość i poukładanie kodu.

Wszystkie parametry wywołania funkcji są odpowiednio walidowane przed przystąpieniem do głównego działania funkcji, dzięki czemu strona odporna jest na próby zmuszenia jej do nieprawidłowego działania.

Wszystkie pola formularzy przechodzą walidację przed dodaniem danych do bazy, co sprawia, że aplikacja jest odporna na ataki typu SQL Injection.


Wyszukiwarka

Podobne podstrony:
PwS Cieśla Dubiel dokumentacja techniczna
PwS Cieśla Dubiel dokumentacja użytkowa
PwS Cieśla Dubiel dokumentacja użytkowa
PwS Cieśla Dubiel 4
PwS Cieśla Dubiel 1
PwS Cieśla Dubiel 3
PwS Cieśla Dubiel 2
20 Rysunkowa dokumentacja techniczna
09 Posługiwanie się dokumentacją techniczną (2)
Dokumentacja techniczna
05 Posługiwanie się dokumentacją techniczną (2)
05 Posługiwanie się dokumentacją techniczną
Posługiwanie się dokumentacją techniczną
02 Posługiwanie się dokumentacją techniczną
OBIEG DOKUMENTÓW, Technik prac biurowych
SA Klient dzialu dokumentacji technicznej
02 Posługiwanie się dokumentacją techniczną
listwa zaciskowa LZ w szafie SO numeracja i opis, ELEKTRYCZNOŚĆ, Dokumentacja techniczna Rokita
dokumentacja techniczna rysunkowa

więcej podobnych podstron