Narzędzia użytkownika

Narzędzia witryny


pl:tiim:lab_tiim_php_projekt

Laboratorium, TIiM, 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ć 3 załączniki).

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:

  • [2p] utworzyć katalog o nazwie blogu (albo zwrócić stosowny komunikat w przypadku istnienia katalogu o tej nazwie; nie może istnieć więcej niż jeden blog o tej samej nazwie),
  • [1p] w w/w katalogu utworzyć plik o nazwie info w którym należy umieścić dane o właścicielu blogu:
  • [1p] nazwę użytkownika (zakończona znakiem końca linii),
  • [2p] hasło użytkownika (zakończone znakiem końca linii, zakodowane z użyciem funkcji skrótu md5()),
  • [1p] opis blogu (wiele linii tekstu).

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] nazwę użytkownika,
  • [2p] hasło (należy zakodować dane pochodzące z formularza za pomocą md5() oraz porównać wynik z zakodowanym hasłem przechowywanym w info).

[1p] Uwaga: nazwa blogu nie jest (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.

[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, ciag znakow wystepujacy 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:

  • rodzaj komentarza (zakończony znakiem końca linii)
  • data i godzina wysłania komentarza (zakończony znakiem końca linii, format: RRRR-MM-DD, GG:MM:SS, data i czas serwera)
  • imię/nazwisko/pseudonim komentującego (zakończony znakiem końca linii)
  • treść komentarza

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:

  • [2p] Zmodyfikuj swój portal, tak aby menu umożliwiające nawigacje pomiędzy dokumentami portalu było przechowywane w osobnym pliku oraz inkludowane przez wszystkiego dokumenty. Do tego celu wykorzystaj PHP.
  • [6p] Zidentyfikuj w swoim kodzie sekcje krytyczne. Zapewnij odpowiednie mechanizmy kontroli dostępu do nich.

Uwaga: przy tworzeniu plików/katalogów upewnij się, że nie powstaną problemy związane z wyścigiem :!:.

pl/tiim/lab_tiim_php_projekt.txt · ostatnio zmienione: 2021/01/08 14:09 (edycja zewnętrzna)