Spis treści

Laboratorium, JiTW, PHP, Projekt

Formularze XHTML

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.).

Przetwarzanie danych z formularza w PHP

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:

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ć:

[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 :!:.