Czego się nauczysz?
- Walidacji adresów email w PHP (FILTER_VALIDATE_EMAIL)
- Obsługi formularzy kontaktowych
- Tworzenia prostego panelu administracyjnego
- Zabezpieczania danych przed atakami XSS
Stworzysz Formularz kontaktowy z logiem - klasyczna funkcjonalnosc każdej strony internetowej. Użytkownik wypełnia formularz (imie, email, wiadomość), dane sa walidowane i zapisywane do pliku. Administrator może przegladac wszystkie wysłane wiadomości w panelu podgladu. To fundament komunikacji na stronach WWW.
Czego się nauczysz?
W prawdziwej pracy...
Formularz kontaktowy to obowiazkowy element niemal każdej strony firmowej. W większych projektach wiadomości trafiaja do systemow CRM, sa wysyłane mailem, kategoryzowane i przypisywane do opiekunow klienta. Znajomosc podstaw walidacji email i bezpiecznego przechowywania danych to must-have dla każdego web developera.
Formularz kontaktowy Użytkownik wypełnia pola: imie, adres email i tresc wiadomości. Po wysłaniu widzi potwierdzenie.
Walidacja danych System sprawdza czy imie nie jest puste, czy email ma poprawny format i czy wiadomość ma minimalna długość.
Zapis i podglad wiadomości Wiadomości sa zapisywane do pliku JSON z data wysłania. Administrator może przegladac liste wszystkich wiadomości.
Przykładowa struktura pliku JSON:
{ "messages": [ { "id": 1, "name": "Anna Kowalska", "email": "anna@example.com", "message": "Dzień dobry, chciałam zapytac o dostepnosc produktu...", "status": "new", "created_at": "2026-02-13 14:30:00" }, { "id": 2, "name": "Jan Nowak", "email": "jan.nowak@firma.pl", "message": "Prosze o kontakt w sprawie współpracy.", "status": "read", "created_at": "2026-02-13 15:45:00" } ]}Wymagane funkcje:
Przykładowy scenariusz:
Ocena: 3.0Użytkownik wchodzi na strone kontaktowa, wpisuje swoje dane i wiadomość. Po kliknieciu “Wyslij” widzi zielony komunikat “Wiadomość została wysłana!”. Przy wpisaniu błędnego e-maila (np. “anna@”) widzi czerwony komunikat “Nieprawidłowy adres email”.
Wszystko z wariantu A, plus:
Przykładowy scenariusz:
Ocena: 4.0-5.0Administrator wchodzi na /admin.php, wpisuje hasło “admin123” i widzi liste wszystkich wiadomości. Przy każdej nowej wiadomości jest znacznik “NOWA”. Po kliknieciu w wiadomość zmienia się jej status na “przeczytana”. U góry widzi “Nowe wiadomości: 3”.
Wszystko z wariantu B, plus:
Przykładowy scenariusz:
Ocena: 5.0-6.0Administrator filtruje wiadomości z ostatniego tygodnia, sortuje od najnowszych i wyszukuje fraze “faktura”. Widzi 2 wyniki. Jedna wiadomość usuwa jako spam. Przy nowej wiadomości użytkownik mógł wybrać kategorie “Reklamacja”.
Walidacja email:
$email = $_POST['email'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $errors[] = "Nieprawidłowy adres email";}Walidacja wiadomości:
$message = trim($_POST['message']);
if (strlen($message) < 10) { $errors[] = "Wiadomość musi mieć co najmniej 10 znakow";}Zapis wiadomości:
$data = json_decode(file_get_contents('messages.json'), true) ?? ['messages' => []];
$newMessage = [ 'id' => time(), 'name' => htmlspecialchars($_POST['name']), 'email' => htmlspecialchars($_POST['email']), 'message' => htmlspecialchars($_POST['message']), 'status' => 'new', 'created_at' => date('Y-m-d H:i:s')];
$data['messages'][] = $newMessage;file_put_contents('messages.json', json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));Prosta autoryzacja admina:
session_start();$adminPassword = 'tajnehaslo123'; // W prawdziwym projekcie użyj hashowania!
if ($_POST['password'] === $adminPassword) { $_SESSION['is_admin'] = true;}
if (!isset($_SESSION['is_admin']) || $_SESSION['is_admin'] !== true) { header('Location: login.php'); exit;}Wykorzystaj lekcje!
Cotygodniowe spotkania podczas lekcji to idealny moment, by:
Pracuj iteracyjnie - lepiej mieć działający wariant A niz niedokonczony C!