Zanim zaczniesz
Wszystkie ćwiczenia tu używają POST. Ćwiczenia 8 i 11 korzystają z sesji, czyli danych zapamiętanych po stronie serwera dla danego użytkownika. Funkcja session_start() musi być wywołana na samym początku pliku, zanim PHP wypisze cokolwiek na ekran. W ćwiczeniu 8 kod pokazuje ją tuż przed formularzem, bo tak łatwiej to zobaczyć, ale w prawdziwym pliku stoi na samej górze.
Na tej stronie jest sześć formularzy POST naraz, więc każdy ma ukryte pole cw z numerem ćwiczenia. W kodzie do przepisania go nie ma. Przy jednym formularzu na stronie nie jest potrzebne.
Formularz rejestracyjny
POSTFormularz, w którym użytkownik podaje imię, e-mail oraz hasło wpisane dwa razy. Strona sprawdza, czy hasła są identyczne.
Na własną rękę: Wymagaj hasła o długości co najmniej 8 znaków i sprawdzaj to przed porównaniem obu haseł.
Wypróbuj
Kod do przepisania
<form method="post">
Imię: <input type="text" name="imie"><br>
E-mail: <input type="email" name="email"><br>
Hasło: <input type="password" name="haslo1"><br>
Powtórz hasło: <input type="password" name="haslo2"><br>
<input type="submit" value="Zarejestruj">
</form>
<?php
if (isset($_POST['imie'])) {
if ($_POST['haslo1'] === $_POST['haslo2']) {
echo "Rejestracja udana!";
} else {
echo "Hasła nie są identyczne.";
}
}
?>Lista zakupów
POSTFormularz, w którym wpisujesz produkt. Każdy wpis trafia na listę zakupów przechowywaną w sesji.
Na własną rękę: Dodaj przy każdym produkcie przycisk do usuwania go z listy. Wskazówka: unset($_SESSION['lista'][$i]).
Wypróbuj
Lista jest pusta.
Kod do przepisania
<?php session_start(); ?>
<form method="post">
Produkt: <input type="text" name="produkt">
<input type="submit" value="Dodaj">
</form>
<?php
if (isset($_POST['produkt'])) {
$_SESSION['lista'][] = $_POST['produkt'];
}
if (!empty($_SESSION['lista'])) {
echo "<ul>";
foreach ($_SESSION['lista'] as $p) {
echo "<li>" . htmlspecialchars($p) . "</li>";
}
echo "</ul>";
}
?>Mini quiz
POSTTrzy pytania jednokrotnego wyboru. Po wysłaniu strona podaje liczbę zdobytych punktów.
Na własną rękę: Dodaj czwarte pytanie z trzema odpowiedziami. Ile miejsc w kodzie musisz zmienić?
Wypróbuj
Kod do przepisania
<form method="post"> 1. Stolica Polski? <br> <input type="radio" name="p1" value="Warszawa">Warszawa <input type="radio" name="p1" value="Kraków">Kraków<br><br> 2. 2+2=? <br> <input type="radio" name="p2" value="4">4 <input type="radio" name="p2" value="5">5<br><br> 3. PHP to... <br> <input type="radio" name="p3" value="język">język <input type="radio" name="p3" value="system">system<br><br> <input type="submit" value="Sprawdź"> </form> <?php $punkty = 0; if (isset($_POST['p1']) && $_POST['p1'] == "Warszawa") $punkty++; if (isset($_POST['p2']) && $_POST['p2'] == "4") $punkty++; if (isset($_POST['p3']) && $_POST['p3'] == "język") $punkty++; echo "Masz $punkty/3 punktów."; ?>
Formularz kontaktowy
POSTFormularz kontaktowy: imię, e-mail, wiadomość. Po wysłaniu wyświetl podsumowanie.
Na własną rękę: Sprawdzaj, czy wiadomość ma co najmniej 10 znaków, i pokaż, ile znaków jej brakuje.
Wypróbuj
Kod do przepisania
<form method="post">
Imię: <input type="text" name="imie"><br>
E-mail: <input type="email" name="email"><br>
Wiadomość: <textarea name="wiad"></textarea><br>
<input type="submit" value="Wyślij">
</form>
<?php
if (isset($_POST['imie'])) {
echo "Dziękujemy, " . htmlspecialchars($_POST['imie']) . "! ";
echo "Twoja wiadomość: " . htmlspecialchars($_POST['wiad']);
}
?>Licznik w sesji
POSTKażde wysłanie formularza zwiększa licznik zapamiętany w sesji.
Na własną rękę: Odśwież stronę (F5) po kliknięciu i zobacz, że licznik nie rośnie. Zastanów się, dlaczego. Potem zamknij kartę, otwórz stronę ponownie i sprawdź, co się stało z licznikiem.
Wypróbuj
Formularz wysłany 0 razy.
Kod do przepisania
<?php session_start(); ?> <form method="post"> <input type="submit" value="Kliknij"> </form> <?php if (!isset($_SESSION['licznik'])) $_SESSION['licznik'] = 0; if ($_SERVER['REQUEST_METHOD'] == "POST") $_SESSION['licznik']++; echo "Formularz wysłany " . $_SESSION['licznik'] . " razy."; ?>
Upload pliku
POSTFormularz z wyborem pliku. Po wysłaniu wyświetl nazwę i rozmiar pliku.
Na własną rękę: Pokaż też typ pliku ($_FILES['plik']['type']) i przyjmuj tylko pliki poniżej 2 MB.
Wypróbuj
Plik tylko odczytujemy, na serwerze nie jest nigdzie zapisywany.
Kod do przepisania
<form method="post" enctype="multipart/form-data">
Wybierz plik: <input type="file" name="plik">
<input type="submit" value="Wyślij">
</form>
<?php
if (isset($_FILES['plik'])) {
echo htmlspecialchars($_FILES['plik']['name']);
echo $_FILES['plik']['size'] . " bajtów";
}
?>