Tematem ćwiczenia jest sporządzenie formularzy służących do zbudowania aplikacji obsługującej Blog. Docelowa aplikacja korzystająca z tych formularzy będzie umożliwiać utworzenie wielu blogów.
Potrzebne są następujące dokumenty XHTML zawierające formularze.
1. [1p] Formularz do założenia Blogu musi umożliwiać wprowadzenie:
nazwy blogu, nazwy użytkownika, hasła użytkownika, opisu blogu (wiele linii tekstu).
2. [2p] Formularz umożliwiający dokonanie wpisu w blogu:
nazwa użytkownika, hasło (niewidoczne przy wpisywaniu), wpis (wiele linii tekstu), data (pole tekstowe: RRRR-MM-DD, zawierające aktualną datę), godzina (pole tekstowe: GG:MM), trzy pliki do dołączenia do wpisu (każdy wpis może posiadać do 3 załączników).
3. [2p] Formularz umożliwiający dodanie komentarza do wpisu w blogu:
rodzaj komentarza: pozytywny, negatywny, neutralny (lista wyboru), komentarz (wiele linii tekstu), imię/nazwisko/pseudonim komentującego (pole tekstowe).
4. Zaobserwuj jak przekazywane są wartości pól formularza jeżeli w/w formularze są typu GET, a jak jeżeli są typu POST? Do tego celu możesz wykorzystać rozszerzenie 'Live HTTP Headers'.
5. Czy można w pojedynczym polu formularza typu 'file' wskazać więcej niż jeden plik? Co mówi o tym standard XHTML 1.0?
6. [1p] Każdy formularz musi posiadać przycisk służący do usunięcia wprowadzonych danych, etykiety przycisków w języku dokumentu (np. jeżeli dokument jest po polsku przycisk musi nazywać się 'Wyczyść' etc.).
Napisz, korzystając z PHP, aplikacje implementującą prosty Blog. Wpisy, jak i komentarze maja być przechowywane w plikach. Pliki te maja być umieszczone w katalogu o nazwie takiej jak nazwa Blogu.
1. [1p] Utwórz skrypt o nazwie nowy.php
obsługujący zakładanie blogu.
Dane wejściowe pochodzą z formularza do założenia Blogu.
Skrypt musi:
info
w którym należy umieścić dane o właścicielu blogu:md5()
) (Czy umiesz uzasadnić w jakim celu stosuje się tu md5?),Uwaga: zwróć uwagę na prawa dostępu do pliku/katalogu tworzonego z poziomu PHP, w zależności od konfiguracji serwera WWW może się tak zdarzyć, że nie będziesz ich właścicielem!!!. Jak rozwiązać ten problem?
2. [1p] Utwórz skrypt o nazwie wpis.php
umożliwiający dodanie wpisu do
blogu. Dane wejściowe pochodzą z formularza do dokonywania wpisu.
Skrypt musi weryfikować:
md5()
oraz porównać wynik z zakodowanym hasłem przechowywanym w info
).[1p] Uwaga: nazwa blogu nie jest i nie może być podawana przez użytkownika w formularzu ani przekazywana do aplikacji w żaden inny sposób! Rozwiąż ten problem!
[2p] Skrypt ma tworzyć nowy plik (w katalogu Blogu) o nazwie: RRRRMMDDGGmmSSUU
gdzie: R - rok, M - miesiąc, D - dzień, G - godzina, m - minuta, S -
sekunda, U - unikalny numer (dla wpisów dokonanych o tym samym
czasie).
Uwaga: R,M,D,G,m pochodzą z formularza, wartość S należy obliczyć na podstawie aktualnego czasu serwera (Czy czas serwera może być różny od czasu przeglądarki?).
[2p] Pliki wysłane przez formularz wpisu winny mieć nazwę: RRRRMMDDGGmmSSUUN.OOO
gdzie N jest kolejnym numerem pliku dołączonym do wpisu, R, M, D, G, m, S, U są takie same jak dla wpisu, OOO jest
oryginalnym literowym rozszerzeniem nazwy pliku (może być dłuższe/krótsze niż 3 litery: ogólnie, ciąg znaków występujący po ostatniej kropce w nazwie pliku).
3. [1p] Utwórz skrypt o nazwie koment.php
umożliwiający dodanie
komentarza do wpisu w blogu.
[2p] Komentarze umieszczane są w katalogu o nazwie: RRRRMMDDGGmmSSUU.k (w razie potrzeby skrypt musi tworzyć katalog automatycznie)
[2p] Komentarze umieszczane są w plikach w w/w katalogu o nazwach będących kolejnymi liczbami dziesiętnymi zaczynając od 0.
[2p] Zawartość pliku to:
4. [2p] Utwórz skrypt o nazwie blog.php
, który będzie wyświetlał
zawartość blogu o wskazanej nazwie (wraz z komentarzami oraz hiperpołączeniami do odpowiednich formularzy i załączników).
[1p] Nazwa blogu do wyświetlenia przekazana musi być za pomocą metody GET oraz atrybutu nazwa np.:
http://......./blog.php?nazwa=Traktor
[1p] W przypadku nie istnienia blogu o wskazanej nazwie musi być wyświetlony stosowny komunikat.
[2p] W przypadku nie podania wartości atrybutu nazwa należy wyświetlić listę wszystkich dostępnych blogów. Elementy listy muszą być hiperpołączeniami do odpowiednich blogów.
5. Ponadto:
Uwaga: przy tworzeniu plików/katalogów upewnij się, że nie powstaną problemy związane z wyścigiem .