Formularze i kontrolki standardowe
Wstęp teoretyczny
W poprzedniej lekcji nauczyliśmy się tworzyć proste formularze oraz odbierać dane w PHP. W tej części zajmiemy się:
- Walidacją danych – sprawdzaniem, czy dane zostały poprawnie wprowadzone.
- Filtrowaniem danych – oczyszczaniem danych z niepożądanych znaków.
- Bezpieczeństwem – ochrona przed atakami (np. XSS).
- Udoskonalonymi kontrolkami – np. select, textarea, file upload.
Dlaczego to ważne?
- Użytkownik może popełnić błąd (np. wpisać tekst zamiast liczby).
- Niektórzy użytkownicy mogą próbować „oszukać” formularz, aby uszkodzić stronę lub uzyskać dostęp do poufnych danych.
- Bezpieczna i poprawna obsługa formularzy to podstawa w każdej aplikacji internetowej.
Walidacja danych w PHP
PHP umożliwia sprawdzanie, czy dane są poprawne.
1. Sprawdzenie, czy pole nie jest puste i czy istnieje
<?php
if (empty($_POST['imie'])) {
echo "Pole 'Imię' nie może być puste!";
}
?>
<?php
if (isset($_POST['imie'])) {
} else {
echo "Pole 'Imię' nie może być puste!";
}
?>
2. Walidacja liczby
<?php
$wiek = $_POST['wiek'];
if (filter_var($wiek, FILTER_VALIDATE_INT)) {
echo "Twój wiek: $wiek";
} else {
echo "Podaj poprawny wiek (liczba całkowita)!";
}
?>
3. Walidacja adresu e-mail
<?php
$email = $_POST['email'];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Adres e-mail poprawny: $email";
} else {
echo "Błędny adres e-mail!";
}
?>
Filtrowanie danych (oczyszczanie)
Aby zabezpieczyć stronę przed atakami (np. XSS – Cross Site Scripting), dane wprowadzone przez użytkownika trzeba filtrować:
<?php
$imie = htmlspecialchars($_POST['imie']);
echo "Twoje imię: $imie";
?>
htmlspecialchars() zamienia np. script na , dzięki czemu nie uruchomi się złośliwy kod.
Dodatkowe kontrolki formularzy
1. Select (lista rozwijana)
<form action="odbierz.php" method="post">
Wybierz kraj:
<select name="kraj">
<option value="PL">Polska</option>
<option value="DE">Niemcy</option>
<option value="FR">Francja</option>
</select>
<input type="submit" value="Wyślij">
</form>
2. Textarea (pole wielowierszowe)
<form action="odbierz.php" method="post">
Napisz coś o sobie:<br>
<textarea name="opis" rows="5" cols="40"></textarea><br>
<input type="submit" value="Wyślij">
</form>
3. Upload pliku
<form action="odbierz.php" method="post" enctype="multipart/form-data">
Wybierz plik:
<input type="file" name="plik"><br>
<input type="submit" value="Wyślij">
</form>
Odbieranie w PHP:
<?php
if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
echo "Plik został przesłany: " . $_FILES['plik']['name'];
} else {
echo "Błąd przy przesyłaniu pliku.";
}
?>
Zadania dla uczniów
Zadanie 1. Stwórz formularz rejestracyjny z polami: imię, e-mail, hasło. Następnie w PHP:
- sprawdź, czy pola nie są puste,
- sprawdź, czy e-mail jest poprawny,
- jeśli wszystko jest poprawne, wyświetl komunikat: „Rejestracja zakończona sukcesem”.
Zadanie 2. Stwórz formularz, w którym użytkownik wybiera:
- ulubiony język programowania (lista rozwijana),
- krótką opinię o programowaniu (textarea),
- przesyła plik (np. zdjęcie).
Napisz skrypt PHP, który:
- wyświetli podane dane,
- sprawdzi, czy przesłano plik,
- w razie braku pliku wyświetli komunikat „Nie wybrano pliku”.