Projekt strony internetowej firmy organizującej przyjęcia
Transkrypt
Projekt strony internetowej firmy organizującej przyjęcia
Politechnika Śląska Gliwice Wydział Automatyki, Elektroniki i Informatyki Rok akademicki 2010/2011 Kierunek: Automatyka i Robotyka, semestr 5 Semestr zimowy Projekt strony internetowej firmy organizującej przyjęcia Autorzy: Adam Birecki, Dawid Sobel 1 1. Tytułem wstępu. Przedmiotem projektu było stworzenie w pełni funkcjonalnego szablonu strony firmy internetowej. Dla ułatwienia zadania wybrano konkretny rodzaj firmy – miała to być firma organizująca różnego rodzaju przyjęcia, zapewniająca jednocześnie muzykę, wyżywienie, oraz usługi wodzirejskie. Szeroki wachlarz ofert oraz funkcji strony w założeniu miał pozwolić zapoznać się z podstawami działania takich i podobnych witryn internetowych oraz zdobyć niezbędne doświadczenie. 2. Opis funkcjonalności 1) System rejestracji i logowania Podstawą do poprawnego funkcjonowania strony internetowej była możliwość założenia własnego kąta w serwisie. Osoby nie będące zalogowane jako użytkownik nie mają dostępu do pełnych informacji oraz do składania zamówień. Natomiast po pomyślnej rejestracji osoba zainteresowana otrzymuje pełny dostęp do strony (oczywiście w granicach uprawnień użytkownika). Użytkownik ma także możliwość modyfikacji danych kontaktowych i zmiany hasła. Obydwie funkcje są dostępne z panelu bocznego użytkownika. Może zmienić podstawowe dane osobowe oraz zmienić hasło po warunkiem, że pamięta stare. Problem pojawia się gdy ktoś zapomni swoje stare hasło, wtedy z pomocą przychodzi możliwość odzyskiwania hasła. Po wybraniu tej opcji użytkownik otrzymuje nowe hasło będące kombinacją dwóch losowych słów słonika „Ispell”. Hasło zostaje zapisane w pliku „haslo.txt” na komputerze użytkownika. Na formularz rejestracji oraz formularz zmiany danych osobowych zostały nałożone ograniczenia mające na celu sprawdzenie poprawności oraz zgodności danych, tzw. walidacja formularzy. Po wprowadzeniu danych niespełniających kryterium użytkownik zostaje poinformowany o błędzie i poproszony o ponowne wypełnienie formularza. 2 Rejestracja Strona domowa HOME 3 przykład zamówienia 2) Panel administratora Użytkownik po zalogowaniu uzyskuje dostęp do formularza Logowanie administratora. Po podaniu nazwy i hasła administratora użytkownik uzyskuje dostęp do menu administratora umożliwiające edycje oferty jak i dodawanie całkowicie nowych kategorii produktów oraz podgląd zarejestrowanych użytkowników. 4 Dodanie nowej kategorii : Dodanie nowej oferty : Banery umożliwiające edycje. Ponadto możliwy jest podgląd zarejestrowanych użytkowników . Niestety z przyczyn losowych nieudało się dokończyć skryptu umożliwiającego łatwy podgląd i edycje danych użytkowników. 3) Panel użytkownika Użytkownik, który zdecyduje się na złożenie zamówienia ma dostęp do w pełni funkcjonalnego koszyka na zakupy. W panelu bocznym (prawym)widoczny jest kalkulator usług - na bieżąco wyświetlana jest suma cen produktów które obecnie są zaznaczone w zamówieniu. W każdej chwili, do momentu wysłania zamówienia, istnieje możliwość całkowitej jego modyfikacji. 5 Przeglądanie oferty i formułowanie zamówienia odbywa się poprzez: a) kliknięcie w link: „Zamówienie” w panelu bocznym użytkownika, gdzie wybiera się kategorie i dokonuje wyboru produktu, b) kliknięcie na banerze w interesująca nas kategorię. Ostatnim etapem składania zamówienia jest zatwierdzenie zamówienia. Zatwierdzenie następuje po wysłaniu formularza. Na podstawie informacji w nim zawartych do klienta zostaje przydzielony prywatny konsultant, z danego województwa, dostępny 24h/dobę. Ważnym elementem jest możliwość ocenienia jakości usług. Jeśli użytkownik jest zadowolony z poziomu usług wybranych grup muzycznych , cateringu lub wodzireja może to wyrazić poprzez dodanie pozytywnej oceny na stronach szczegółowych poszczególnych grup. W ten sam sposób wyrazić również swoje niezadowolenie. Oceny są w skali od 1 do 10. 3. Część techniczna Zastosowane technologie : PHP 5.3 CSS HTML MySQL Tworzenie stron w dzisiejszych czasach jest bardzo popularne. Wielokrotnie w Internecie natrafialiśmy na mechanizmy logowania i rejestracji których zasady działania nie znaliśmy i nie rozumieliśmy. W związku z tym przedmiotem postanowiliśmy poszerzyć naszą wiedzę w tym właśnie kierunku gdyż wierzymy iż wiedza ta z łatwością znajdzie zastosowanie praktyczne a być może da nam nawet możliwość zarobkowania. Kod Programu: Projekt jest tak obszerny że trudno było wybrać jakiś spójny fragment kodu rozwiązujący konkretny problem. Schemat projektu opiera się na wykorzystywaniu funkcji które mają wykonują poszczególne zadania. Poniżej przedstawiono 2 przykładowe: 6 a) Funkcja odpowiedzialna za ocenę produktów: function zmiana_sredniej($wart_oceny) { if($wart_oceny > 0) { $lacz = lacz_bd_n(); $wynik = $lacz->query("select suma_sr from oferty where lp='".$_GET['lp']."'"); if (!$wynik) { throw new Exception('suma_sr nie dziala'); } echo "wart_ocen = ".$wart_oceny; echo "lp = ".$_GET['lp']." "; $zapytanie = "select suma_sr from oferty where lp = '".$_GET['lp']."'"; $wynik = $lacz->query($zapytanie); if($wynik->num_rows>0) { $oferta = $wynik->fetch_object(); $suma_sr = $oferta->suma_sr; } $zapytanie = "select liczba_sr from oferty where lp = '".$_GET['lp']."'"; $wynik = $lacz->query($zapytanie); if ($wynik->num_rows>0) { $oferta = $wynik->fetch_object(); $liczba_sr = $oferta->liczba_sr; } ++$liczba_sr; $suma_sr = $suma_sr + $wart_oceny; $srednia = $suma_sr / $liczba_sr; //echo "suma_sr = \t".$suma_sr." liczba_sr = ".$liczba_sr." srednia = ".$srednia; $zapytanie = "update oferty set srednia = '".$srednia."', liczba_sr = '".$liczba_sr."', suma_sr = '".$suma_sr."' where lp = '".$_GET['lp']."'"; $wynik = $lacz->query($zapytanie); if (!$wynik) { echo 'Fail!'; return false; }}}\ 7 b) Funkcja wyświetlająca formularz rejestracji: function wyswietl_form_rej() { ?> <form method="post" action="nowa_rejestracja.php"> <table bgcolor="#cccccc"> <tr> <td>Podaj Imię :</td> <td colspan="2" align="left"> <input type="text" name="Imie"></td></tr> <tr> <td>Podaj Nazwisko :</td> <td colspan="2" align="left"> <input type="text" name="Nazwisko"></td></tr> <tr> <td>Podaj Nr telefonu:</td> <td colspan="2" align="left"> <input type="text" name="tel"></td></tr> <tr> <td>Adres poczty elektronicznej:</td> <td><input type="text" name="email" size="30" maxlength="100"></td></tr> <tr> <td>Preferowana nazwa użytkownika <br />(maksymalnie 16 znakďż˝w):</td> <td valign="top"><input type="text" name="nazwa_uz" size="16" maxlength="16"/></td></tr> <tr> <td>Hasďż˝o <br />(pomiędzy 6 i 16 znaków):</td> <td valign="top"><input type="password" name="haslo" size="16" maxlength="16"/></td></tr> <tr> <td>Potwierdz hasło:</td> <td><input type="password" name="haslo2" size="16" maxlength="16"/></td></tr> <tr> <td colspan="2" align="center"> <input type="submit" value="Rejestracja"></td></tr> </table></form> <?php } 8 Problemy Problemy na które natrafiono były związane najczęściej z różnorodnością źródeł informacji z których korzystaliśmy. Dla przykładu : Mechanizm InnoDB : create table klienci( …) type=InnoDB; powyższe zapytanie tworzące tabele klienci SQL okazało się nie działać. MySQL w wersji 5.5 nie wspiera opcji type i wymaga zastosowania opcji engine. W trakcie pracy napotykano na podobne problemy wielokrotnie. Często okazywało się że standardy programowania są tylko teoretyczne a błędy polegały np. na złym doborze składni polecenia. To że błędy te okazywały się tak trywialne powodowało to że trudno było się ich doszukać a szukanie zajmowało wiele cennego czasu. 9