Do tej pory nasz kod działał w próżni. Teraz otworzymy go na świat i pozwolimy użytkownikom na interakcję. Stworzymy prosty formularz kontaktowy, który pobierze imię oraz wiadomość i wyświetli je na ekranie.
Krok 1: Tworzenie Formularza HTML
Najpierw potrzebujemy samego formularza. Stwórz nowy plik i nazwij go formularz.html.
Ważne: Ten plik będzie miał rozszerzenie .html, ponieważ na razie nie zawiera żadnego kodu PHP.
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Formularz Kontaktowy</title>
<style>
body { font-family: sans-serif; }
.container { width: 400px; margin: 50px auto; padding: 20px; border: 1px solid #ccc; }
input, textarea { width: 100%; margin-bottom: 10px; padding: 8px; box-sizing: border-box; }
button { padding: 10px 15px; background-color: #007bff; color: white; border: none; cursor: pointer; }
</style>
</head>
<body>
<div class="container">
<h2>Napisz do nas!</h2>
<form action="odbierz.php" method="POST">
<label for="imie">Twoje imię:</label>
<input type="text" id="imie" name="imie">
<label for="wiadomosc">Twoja wiadomość:</label>
<textarea id="wiadomosc" name="wiadomosc" rows="4"></textarea>
<button type="submit">Wyślij</button>
</form>
</div>
</body>
</html>Analiza kluczowych atrybutów formularza:
<form action="odbierz.php" method="POST">: To najważniejsza część.action="odbierz.php": Określa, do którego pliku zostaną wysłane dane po kliknięciu przycisku „Wyślij”.method="POST": Określa metodę wysyłki.POSTwysyła dane w „tle”, w ciele żądania HTTP. Jest to standardowa i bezpieczniejsza metoda dla formularzy. Alternatywą jestGET, która wysyła dane w adresie URL (np.?imie=Jan&...), co jest widoczne dla wszystkich.
name="imie"iname="wiadomosc": Atrybutynamesą niezwykle ważne. To one stają się kluczami w tablicy, w której PHP otrzyma dane.
Krok 2: Tworzenie Skryptu PHP do Odbierania Danych
Teraz stwórz drugi plik, który nazwałeś w atrybucie action. Nazwij go odbierz.php i umieść w tym samym folderze (htdocs).
<?php
// Sprawdzamy, czy formularz został wysłany metodą POST
if ($_SERVER["REQUEST_METHOD"] === "POST") {
// Sprawdzamy, czy dane zostały przesłane i nie są puste
if (!empty($_POST['imie']) && !empty($_POST['wiadomosc'])) {
// Odbieramy dane i zabezpieczamy je przed atakami XSS
$imie = htmlspecialchars($_POST['imie']);
$wiadomosc = htmlspecialchars($_POST['wiadomosc']);
// Wyświetlamy powitanie i otrzymane dane
echo "<h1>Dziękujemy za Twoją wiadomość, $imie!</h1>";
echo "<p>Oto treść Twojej wiadomości:</p>";
echo "<p><em>" . nl2br($wiadomosc) . "</em></p>"; // nl2br() zamienia znaki nowej linii na <br>
echo '<a href="formularz.html">Wróć do formularza</a>';
} else {
// Jeśli któreś pole jest puste
echo "<h1>Błąd!</h1>";
echo "<p>Proszę wypełnić wszystkie pola formularza.</p>";
echo '<a href="formularz.html">Wróć i spróbuj ponownie</a>';
}
} else {
// Jeśli ktoś spróbuje wejść na plik odbierz.php bezpośrednio
echo "<h1>Błąd!</h1>";
echo "<p>Formularz nie został wysłany.</p>";
}
?>Jak to wszystko działa?
- Superglobalna tablica
$_POST: Kiedy formularz jest wysyłany metodąPOST, PHP automatycznie tworzy specjalną tablicę asocjacyjną o nazwie$_POST. Kluczami w tej tablicy są atrybutynamez pól formularza ('imie','wiadomosc'), a wartościami są dane wprowadzone przez użytkownika. if ($_SERVER["REQUEST_METHOD"] === "POST"): To jest zabezpieczenie. Sprawdzamy, czy użytkownik faktycznie wysłał formularz, a nie wszedł na stronęodbierz.phpwpisując adres w przeglądarce.!empty($_POST['imie']):empty()to funkcja, która sprawdza, czy zmienna jest pusta. Używamy jej, aby upewnić się, że użytkownik wypełnił wymagane pola.htmlspecialchars()– KLUCZOWE ZABEZPIECZENIE: Ta funkcja jest absolutnie niezbędna. Zamienia ona znaki specjalne HTML (jak<i>) na ich bezpieczne odpowiedniki. Chroni to Twoją stronę przed atakami typu Cross-Site Scripting (XSS), gdzie złośliwy użytkownik mógłby w polu formularza wpisać kod JavaScript, który by się wykonał. Zawsze używajhtmlspecialchars()do wyświetlania danych wprowadzonych przez użytkownika!
Testowanie
- Upewnij się, że serwer Apache w XAMPP jest uruchomiony.
- Otwórz w przeglądarce plik z formularzem:
http://localhost/formularz.html. - Wpisz swoje imię i wiadomość, a następnie kliknij „Wyślij”.
- Powinieneś zostać przekierowany na stronę
odbierz.phpi zobaczyć spersonalizowaną wiadomość powitalną.
Podsumowanie
OGROMNE GRATULACJE! Stworzyłeś swoją pierwszą w pełni funkcjonalną, interaktywną aplikację webową. Połączyłeś w niej wszystko, czego się nauczyłeś, aby przetworzyć dane od użytkownika, a przy tym zadbałeś o podstawowe bezpieczeństwo. To gigantyczny krok w Twojej nauce programowania.