Przejdź do głównej zawartości

Formularz kontaktowy + log

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?

  • Walidacji adresów email w PHP (FILTER_VALIDATE_EMAIL)
  • Obsługi formularzy kontaktowych
  • Tworzenia prostego panelu administracyjnego
  • Zabezpieczania danych przed atakami XSS

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.

  1. Formularz kontaktowy Użytkownik wypełnia pola: imie, adres email i tresc wiadomości. Po wysłaniu widzi potwierdzenie.

  2. Walidacja danych System sprawdza czy imie nie jest puste, czy email ma poprawny format i czy wiadomość ma minimalna długość.

  3. 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:

  • Formularz: imie, email, wiadomość (textarea)
  • Walidacja email (FILTER_VALIDATE_EMAIL)
  • Walidacja pozostałych pol (niepuste)
  • Zapis do pliku JSON
  • Komunikat potwierdzenia po wysłaniu
  • Prosty interfejs CSS

Przykładowy scenariusz:

Uż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”.

Ocena: 3.0

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:

  • Pokazac postepy - nawet małe kroki się licza
  • Wyjaśnić watpliwosci - pytaj, nie zgaduj
  • Skonsultowac rozwiązania - feedback pomoze Ci się rozwijac

Pracuj iteracyjnie - lepiej mieć działający wariant A niz niedokonczony C!