Formularze, przetwarzanie formularzy w PHP
Przypuszczam, że utworzyliśmy formularz HTML, który wysyłamy, a teraz chcemy przetworzyć dane. O tworzeniu formularza HTML można przeczytać w oddzielnym artykule.
Odbieranie danych - różne sposoby
Sposób wysyłania formularza jest określany bezpośrednio w kodzie HTML
Dostępne są 2 opcje:
- GET - jest widoczny w pasku adresu po znaku zapytania
Na przykład:
php.baraja.cz/search.php?query=formulare. - POST - ukryty (niewidoczny), większość formularzy jest wysyłana pocztą
Następnie musimy je odczytać w PHP, stosując tę samą metodę.
Pobieranie danych od użytkownika i przekazywanie ich do skryptu
Podstawą jest formularz HTML, o tym, jak go stworzyć, można przeczytać w osobnym artykule.
Na początek załóżmy prosty formularz służący do wprowadzania imienia i nazwiska użytkownika:
<form action="welcome.php" method="GET">Zadejte jméno: <input type="text" name="username"><input type="submit" value="odeslat"></form>
Zostanie wyświetlone pole tekstowe, w którym należy wpisać nazwę i kliknąć przycisk Wyślij. Gdy przycisk zostanie kliknięty, zawartość pola zostanie wysłana do skryptu welcome.php.
Teraz zajmiemy się właściwym przetwarzaniem danych w pliku welcome.php:
$username = $_GET['nazwa użytkownika'];echo 'Wprowadzona nazwa to:' . $username;
Zwróć uwagę na specjalną zmienną $_GET. Jest to zmienna globalna, która zawiera dane z formularza i może być dostępna jako tablica.
Problem z tym rozwiązaniem polega jednak na tym, że otrzymane dane nie są bezpieczne i podobny formularz można łatwo zaatakować. Na przykład potencjalny napastnik może wpisać w polu zamiast nazwy kod javascript, który zostanie zapisany na stronie i wykonany.
Dlatego zawsze należy oczyszczać dane użytkownika przed umieszczeniem ich w kodzie HTML:
$username = $_GET['nazwa użytkownika'] ?? 'Nieznany';echo 'Wprowadzona nazwa to:' . htmlspecialchars($username);
Dalsze przetwarzanie
Z otrzymanymi danymi możemy zrobić wszystko i traktować je jak zwykłe zmienne.
Na przykład dodaj wartości w dwóch polach:
echo $_GET['x'] + $_GET['y'];
Lub zapisać do pliku, bazy danych, wiadomości e-mail, ...
W tym celu można skorzystać z następujących funkcji:
- file_put_contents - funkcja zapisująca dane do pliku
- MD5 - obliczanie sumy kontrolnej, na przykład dla haseł
- Cookies - zapisywanie danych do cookies (małych plików wewnątrz przeglądarki internetowej)