Ilość danych, jaką można przesłać przez formularz HTML, zależy od kilku czynników – zarówno po stronie samego formularza, jak i serwera, który odbiera dane. W HTML można precyzyjnie ustalić rozmiary poszczególnych pól, lecz ostateczna granica przesyłanych danych leży również w konfiguracji serwera i przeglądarki.
Ograniczenia w samym kodzie HTML
W standardowym formularzu HTML istnieje możliwość ustawienia limitów długości danych przesyłanych przez poszczególne pola tekstowe:
- Atrybut maxlength – pozwala określić maksymalną liczbę znaków, które użytkownik może wpisać w pole tekstowe (
<input>lub<textarea>);
<input type="text" name="nazwa" maxlength="50">
W powyższym wypadku użytkownik nie może wpisać więcej niż 50 znaków w tym polu.
- Atrybut minlength – pozwala ustalić minimalną wymaganą liczbę znaków w pojedynczym polu;
<input type="text" name="komentarz" minlength="10" maxlength="500">
Oznacza to, że użytkownik musi wpisać co najmniej 10, a maksymalnie 500 znaków.
- Textarea – wieloliniowe pole tekstowe również może mieć narzucone te atrybuty, dzięki czemu da się kontrolować rozmiar przesyłanego tekstu;
<textarea name="opis" minlength="20" maxlength="1000"></textarea>
- Brak ograniczeń domyślnych – jeśli w formularzu nie ustawisz ograniczenia
maxlength, użytkownik w praktyce może wprowadzić bardzo dużą ilość danych (limitem będzie konfiguracja przeglądarki lub serwera).
Ograniczenia po stronie serwera
Najważniejsze ograniczenie globalnej ilości danych, jaką można przesłać przez formularz, definiuje serwer – przykładowo przez takie ustawienia jak:
post_max_sizeorazupload_max_filesizew PHP,- limit dopuszczalnego rozmiaru zapytania POST/PUT (np. w Nginx, Apache, IIS).
Jeśli wysyłasz bardzo duże pliki lub obsługujesz formularze z dużą ilością tekstu (np. w aplikacji do edycji dokumentów), te limity musisz ustawić odpowiednio wyżej. Przeglądarki również mogą mieć własne limity długości poszczególnych pól (zazwyczaj bardzo wysokie, rzędu megabajtów).
Praktyczne przykłady zastosowań
Rejestracja użytkownika
<form method="post" action="rejestracja.php">
<label for="username">Nazwa użytkownika:</label>
<input type="text" name="username" maxlength="30">
<label for="email">E-mail:</label>
<input type="email" name="email">
<label for="password">Hasło:</label>
<input type="password" name="password" maxlength="60">
<input type="submit" value="Zarejestruj się">
</form>
Dzięki maxlength ograniczasz długość nazwy użytkownika do 30 znaków, a hasła do 60 znaków. To zabezpiecza zarówno samą aplikację, jak i bazę danych przed niekontrolowaną ilością danych.
Formularz kontaktowy z limitem długości wiadomości
<form method="post" action="kontakt.php">
<label for="temat">Temat:</label>
<input type="text" name="temat" maxlength="100">
<label for="wiadomosc">Wiadomość:</label>
<textarea name="wiadomosc" maxlength="2000"></textarea>
<input type="submit" value="Wyślij">
</form>
Tu limit długości wiadomości zabezpiecza system przed nadużyciami lub próbą przesłania zbyt dużej ilości tekstu jednorazowo.
Ankiety, quizy, recenzje
Często stosuje się limit od do, np.:
<textarea name="recenzja" minlength="30" maxlength="500"></textarea>
Wysyłka dużych plików
W przypadku przesyłania plików, to serwer ustala granicę maksymalnego rozmiaru przesyłanego pliku. Na poziomie formularza można również ograniczyć akceptowane typy plików oraz wielkość, ale warto zawsze kontrolować to także po stronie serwera.
Podsumowanie praktyczne
- Każde pole formularza HTML może mieć własny limit długości danych (
maxlength), - jeśli nie ustawisz limitu, przeglądarka i serwer zadecydują, ile danych można realnie przesłać,
- całkowita ilość danych przekazywana przez formularz jest sumą wszystkich jego pól – decyduje o tym m.in. limit serwera,
- kontrolowanie długości na poziomie formularza (HTML5) pozwala na lepszą walidację danych jeszcze po stronie użytkownika.
Zawsze stosuj ograniczenia na długość pól, szczególnie przy danych czułych (login, hasło, adres itd.) i nie polegaj wyłącznie na ograniczeniach po stronie klienta. Walidacja po stronie serwera jest konieczna i powinna być traktowana priorytetowo w każdym rozwiązaniu internetowym.