Arkusz EE.09 : 2022 - styczeń - zad. 04 (php)

Oznaczenie: EE.09-04-22.01-SG   Limit czasu: 150 minut

Zadanie egzaminacyjne

Wykonaj stronę rejestracji na forum miłośników psów, wykorzystując pakiet XAMPP, edytor zaznaczający składnię i edytor grafiki rastrowej.

Aby wykonać zadanie, zaloguj się na konto Egzamin bez hasła. Na pulpicie znajduje się archiwum ZIP o nazwie psy.zip zabezpieczone hasłem: !Psy!Psy!

Pobierz psy.zip

Należy utworzyć folder o nazwie odpowiadającej numerowi PESEL zdającego lub w przypadku jego braku innemu numerowi, którym został podpisany arkusz. Archiwum należy rozpakować do tego folderu.

Ważne! Wszystkie wykonane w czasie egzaminu pliki w tym zrzuty ekranu, pliki strony, stylów należy umieścić w tym folderze.

Operacje na bazie danych

Uruchom usługi MySQL i Apache za pomocą XAMPP Control Panel. Za pomocą narzędzia phpMyAdmin wykonaj podane operacje na bazie danych:

  • Utwórz bazę danych o nazwie psy
  • Zapisz i wykonaj zapytania SQL działające na bazie danych psy. Zapytania zapisz w pliku kwerendy.txt, w folderze z numerem PESEL lub w przypadku jego braku w folderze z innym numerem, którym został podpisany arkusz. Wykonaj zrzuty ekranu przedstawiające wyniki działania kwerend. Zrzuty zapisz w formacie JPEG i nadaj im nazwy kw1, kw2, kw3, kw4. Zrzuty powinny obejmować cały ekran monitora z widocznym paskiem zadań
    • Zapytanie 1: tworzące tabelę uzytkownicy. Tabela powinna zawierać
      • klucz główny id typu całkowitego dodatniego, jawnie zapisany oraz automatycznie inkrementowany, nie może przyjmować wartości pustych
      • login typu napisowego maksymalnie 50-znakowego
      • haslo typu napisowego maksymalnie 50-znakowego
    • Zapytanie 2: dodające do tabeli użytkownika o loginie Grzegorz z hasłem „g” (bez szyfrowania)
  • Po wykonaniu zapytań 1 i 2 zaimportuj do tabeli uzytkownicy plik uzytkownicy.sql z rozpakowanego archiwum. Wykonaj zrzut ekranu po imporcie. Na zrzucie powinna być widoczna zawartość tabeli uzytkownicy. Zrzut zapisz w folderze z numerem PESEL lub w przypadku jego braku w folderze z innym numerem, którym został podpisany arkusz, w formacie PNG i nazwij egzamin. Nie kadruj zrzutu. Powinien on obejmować cały ekran monitora, z widocznym paskiem zadań
  • Po wykonaniu importu należy wykonać pozostałe zapytania SQL
    • Zapytanie 3: wybierające jedynie pole login z tabeli uzytkownicy
    • Zapytanie 4: wybierające jedynie pola id oraz login z tabeli uzytkownicy dla użytkowników, których hasło zaczyna się od cyfry 4

Witryna internetowa

Obraz 1. Witryna internetowa, strona logowanie.php

Cechy grafiki:

  • Obraz z pliku obraz.jpg, wypakowany z archiwum, ma zostać odbity poziomo oraz przeskalowany z zachowaniem proporcji tak, aby jego wysokość wynosiła dokładnie 500 px i zapisany pod tą samą nazwą

Cechy witryny:

  • Składa się ze stron: logowanie.php, regulamin.html
  • W pliku o nazwie regulamin.html jest wpisany jedynie napis „regulamin”. Pozostałe wymagania dotyczą jedynie pliku logowanie.php
  • Zastosowany właściwy standard kodowania polskich znaków
  • Tytuł strony widoczny na karcie przeglądarki: „Forum o psach”
  • Arkusz stylów w pliku o nazwie styl4.css prawidłowo połączony z kodem strony
  • Podział strony na bloki: baner, blok lewy oraz dwa bloki prawe jeden pod drugim, poniżej stopka. Podział zrealizowany za pomocą znaczników sekcji tak, aby wygląd układu bloków strony po uruchomieniu w przeglądarce, był zgodny z Obrazem 1
  • Zawartość banera: nagłówek pierwszego stopnia o treści „Forum wielbicieli psów”
  • Zawartość bloku lewego: obraz o nazwie obraz.jpg z tekstem alternatywnym o treści „foksterier”
  • Zawartość pierwszego bloku prawego:
    • Nagłówek drugiego stopnia o treści „Zapisz się”
    • Formularz wysyłający dane do tej samej strony metodą post z zawartością zgodną z Obrazem 1
      • Napis „login: ”, następnie pole edycyjne
      • Napis „hasło: ”, następnie pole edycyjne pozwalające na niejawne wpisanie hasła
      • Napis „powtórz hasło: ”, następnie pole edycyjne pozwalające na niejawne wpisanie hasła
      • Przycisk o treści „Zapisz” wysyłający dane z formularza
    • Efekt działania skryptu
  • Zawartość drugiego bloku prawego:
    • Nagłówek drugiego stopnia o treści „Zapraszamy wszystkich”
    • Lista numerowana (uporządkowana) z elementami: „właścicieli psów”, „weterynarzy”, „tych, co chcą kupić psa”, „tych, co lubią psy”
    • Odnośnik do pliku regulamin.html o treści „Przeczytaj regulamin forum”
  • Zawartość stopki: napis o treści „Stronę wykonał: ”, dalej wstawiony numer PESEL zdającego lub w przypadku jego braku inny numer, którym został podpisany arkusz

Styl CSS witryny internetowej

Cechy formatowania CSS:

  • Są zawarte wyłącznie w zewnętrznym arkuszu stylów
  • Domyślne dla całej strony: krój czcionki Garamond
  • Dla banera: kolor tła SaddleBrown, biały kolor czcionki, wyrównanie tekstu do środka, wysokość 50 px
  • Dla bloku lewego: kolor tła Tan, wysokość 500 px, szerokość 40%
  • Dla obu bloków prawych: kolor tła Tan, wysokość 250 px, szerokość 60%
  • Dla bloku stopki: kolor tła SaddleBrown, biały kolor czcionki
  • Dla formularza: kolor tła SaddleBrown, biały kolor czcionki, marginesy wewnętrzne 10 px (góra i dół) i 30 px (lewy i prawy), szerokość 300 px
  • Dla zastosowanych w formularzu pól: marginesy zewnętrzne 5 px
  • Dla paragrafu (akapitu): przed każdym paragrafem wstawiany jest tekst o treści „STATUS: ”

Skrypt

W Tabeli 1 podano wybór funkcji PHP do obsługi bazy danych oraz opis funkcji sha1. Wymagania dotyczące skryptu:

  • Napisany w języku PHP
  • Skrypt łączy się z serwerem bazy danych na localhost, użytkownik root bez hasła, baza danych o nazwie psy
  • Po wykonaniu operacji na bazie danych skrypt zamyka połączenie z serwerem
  • Skrypt obsługuje błędy danych formularza i wyświetla komunikaty w paragrafie (akapicie):
    • „wypełnij wszystkie pola”, jeżeli nie wypełniono przynajmniej jednego pola formularza
    • „login występuje w bazie danych, konto nie zostało dodane”, jeżeli podany login znajduje się w bazie danych, do sprawdzenia należy posłużyć się zapytaniem 3
    • „hasła nie są takie same, konto nie zostało dodane”, jeżeli hasła wpisane do pola „hasło” oraz pola „powtórz hasło” różnią się
  • W przypadku poprawnych danych skrypt
    • Szyfruje hasło algorytmem US Secure Hash Algorithm 1
    • Wysyła do bazy danych zapytanie 2 zmodyfikowane w ten sposób, że w polach login i haslo są wpisane dane pobrane z formularza (hasło powinno być zaszyfrowane)
    • Wyświetla w paragrafie komunikat „Konto zostało dodane”

Tabela 1. Wybór funkcji języka PHP do obsługi bazy MySQL i MariaDB

Funkcje bilioteki mysqli Zwracana wartość
mysqli_connect(serwer, uzytkownik, haslo, nazwa_bazy) id połączenia lub FALSE, gdy niepowodzenie
mysqli_select_db(id_polaczenia, nazwa_bazy) TRUE / FALSE, w zależności od stanu operacji
mysqli_error(id_polaczenia) Tekst komunikatu błędu
mysqli_close(id_polaczenia) TRUE / FALSE, w zależności od stanu operacji
mysqli_query(id_polaczenia, zapytanie) Wynik zapytania
mysqli_fetch_row(wynik_zapytania) Tablica numeryczna odpowiadająca wierszowi zapytania
mysqli_fetch_array(wynik_zapytania) Tablica zawierająca kolejny wiersz z podanych w wyniku zapytania lub FALSE, jeżeli nie ma więcej wierszy w wyniku zapytania
mysqli_num_rows(wynik_zapytania) Liczba wierszy w podanym zapytaniu
mysqli_num_fields (wynik_zapytania) Liczba kolumn w podanym zapytaniu

Opis funkcji sha1, pobrany ze strony php.net, dostęp 6.11.2019

UWAGA!
Po zakończeniu pracy utwórz w folderze z numerem PESEL lub w przypadku jego braku w folderze z innym numerem, którym został podpisany arkusz plik tekstowy o nazwie przeglądarka.txt. Zapisz w nim nazwę przeglądarki internetowej, w której weryfikowano poprawność działania witryny.
Nagraj płytę z rezultatami pracy. W folderze z numerem PESEL lub w przypadku jego braku w folderze z innym numerem, którym został podpisany arkusz powinny się znajdować pliki: egzamin.png, kw1.jpg, kw2.jpg, kw3.jpg, kw4.jpg, kwerendy.txt, logowanie.php, obraz.jpg, przeglądarka.txt, regulamin.html, styl4.css, ewentualnie inne przygotowane pliki.  
Po nagraniu płyty sprawdź poprawność nagrania w obecności przewodniczącego zespołu nadzorującego, na specjalnie przygotowanym do tego celu stanowisku. Opisz płytę swoim numerem PESEL lub w przypadku jego braku innym numerem, którym został podpisany arkusz i pozostaw na stanowisku, zapakowaną w pudełku wraz z arkuszem egzaminacyjnym.

Czas przeznaczony na wykonanie zadania wynosi 150 minut.

Ocenie będzie podlegać 5 rezultatów:

  • operacje na bazie danych
  • zawartość witryny internetowej
  • działanie witryny internetowej
  • styl CSS witryny internetowej
  • skrypt.