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