Formularze w HTML

ncoder html tutorial

Wprowadzenie

Formularze są nieodłącznym elementem większości interaktywnych stron internetowych. Pozwalają użytkownikom wprowadzać dane, wysyłać je do serwera i przetwarzać. W tym obszernym wpisie blogowym zgłębimy temat formularzy w HTML i przedstawimy kompletny przewodnik, który pomoże Ci zrozumieć, jak tworzyć interaktywne formularze za pomocą HTML i jak wykorzystać różne elementy i atrybuty formularzy. Dodatkowo, przedstawimy praktyczne przykłady kodu, które pokażą Ci, jak zaimplementować różne rodzaje formularzy.

Podstawy formularzy HTML

    • Struktura podstawowego formularza: <form>, <input>, <label>.
    • Obsługa metody HTTP: GET i POST.
    • Zastosowanie atrybutów action i method.
<form action="process-form.php" method="post">
  <label for="name">Imię:</label>
  <input type="text" id="name" name="name" required>

  <label for="email">Email:</label>
  <input type="email" id="email" name="email" required>

  <input type="submit" value="Wyślij">
</form>

Typy pól formularza

    • Tekstowe pola formularza: <input type="text">, <input type="password">, <textarea>.
    • Pola wyboru: <input type="checkbox">, <input type="radio">, <select>, <option>.
    • Pola numeryczne: <input type="number">, <input type="range">.
    • Data i czas: <input type="date">, <input type="time">, <input type="datetime-local">.
    • Przesyłanie plików: <input type="file">.
<input type="checkbox" id="subscribe" name="subscribe" value="1">
<label for="subscribe">Zapisz się do newslettera</label>

<input type="radio" id="male" name="gender" value="male">
<label for="male">Mężczyzna</label>

<input type="radio" id="female" name="gender" value="female">
<label for="female">Kobieta</label>

<select id="country" name="country">
  <option value="pl">Polska</option>
  <option value="us">Stany Zjednoczone</option>
  <option value="uk">Wielka Brytania</option>
</select>

Walidacja formularzy

    • Wymagane pola: <input required>, <select required>.
    • Walidacja typu danych: <input type="email">, <input type="url">, <input type="tel">.
    • Minimalna i maksymalna długość: <input minlength>, <input maxlength>.
    • Walidacja niestandardowa: JavaScript i atrybut pattern.
<input type="number" id="age" name="age" min="18" max="99">

<input type="password" id="password" name="password" pattern=".{6,}" title="Hasło musi mieć co najmniej 6 znaków">

<input type="url" id="website" name="website" placeholder="http://example.com">

Grupowanie pól formularza

    • Grupowanie pól: <fieldset>, <legend>.
    • Wielokrotne pola: <input name="name[]">.
<fieldset>
  <legend>Adres:</legend>

  <label for="street">Ulica:</label>
  <input type="text" id="street" name="street">

  <label for="city">Miasto:</label>
  <input type="text" id="city" name="city">
</fieldset>

Obsługa formularzy po stronie serwera

    • Przesyłanie danych do serwera: atrybut action i method.
    • Przetwarzanie danych po stronie serwera w różnych językach programowania.
$name = $_POST['name'];
$email = $_POST['email'];

// Przetwarzanie danych formularza...

Styling formularzy

    • Zastosowanie CSS do stylizacji formularzy.
    • Własne style dla różnych stanów pól formularza: :focus, :hover, :invalid, itp.
<style>
  input[type="text"] {
    padding: 10px;
    border: 1px solid #ccc;
    border-radius: 4px;
  }

  input[type="submit"] {
    background-color: #4CAF50;
    color: white;
    padding: 10px 20px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
  }
</style>

Responsywne formularze

    • Dostosowanie formularzy do różnych urządzeń za pomocą CSS i mediów zapytania.
<style>
  @media screen and (max-width: 600px) {
    input[type="text"], select {
      width: 100%;
    }
  }
</style>

Udoskonalenia HTML5

    • Nowe atrybuty i elementy wprowadzone w HTML5, takie jak autocomplete, placeholder, autofocus, required, itp.
<input type="text" id="name" name="name" autocomplete="off">

<input type="text" id="phone" name="phone" placeholder="Wpisz numer telefonu">

<input type="text" id="email" name="email" required autofocus>

Bezpieczeństwo formularzy

    • Ochrona przed atakami typu CSRF.
    • Walidacja danych po stronie serwera.

Formularz HTML:

<form action="process-form.php" method="post">
  <input type="hidden" name="csrf_token" value="<?php echo generateCSRFToken(); ?>">

  <label for="name">Imię:</label>
  <input type="text" id="name" name="name" required>

  <input type="submit" value="Wyślij">
</form>

Skrypt PHP (process-form.php):

<?php
session_start();

// Sprawdzenie zabezpieczenia przed atakami CSRF
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
    die('Niedozwolona operacja!'); // Możesz dostosować komunikat błędu do swoich potrzeb
  }
}

// Walidacja danych po stronie serwera
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  $name = $_POST['name'];

  // Sprawdzenie czy imię zostało podane
  if (empty($name)) {
    die('Proszę wprowadzić imię!'); // Możesz dostosować komunikat błędu do swoich potrzeb
  }

  // Przetwarzanie danych formularza...
}

// Generowanie i zapisywanie nowego tokena CSRF
function generateCSRFToken() {
  $token = bin2hex(random_bytes(32));
  $_SESSION['csrf_token'] = $token;
  return $token;
}
?>

W powyższym przykładzie, do formularza dodano ukryte pole (<input type="hidden">) zawierające token CSRF. Token ten jest generowany przy ładowaniu strony, zapisywany w sesji i porównywany z tokenem przesłanym w formularzu po jego wysłaniu. Jeśli tokeny nie pasują do siebie, to oznacza, że żądanie może być próbą ataku CSRF i można przerwać przetwarzanie formularza.

Następnie, po stronie serwera, dane z formularza są weryfikowane i walidowane. W przykładzie sprawdzamy, czy pole „name” zostało wypełnione. Jeśli nie, wyświetlamy odpowiedni komunikat błędu.

Pamiętaj, że powyższy przykład jest uproszczony i warto dodatkowo zastosować inne zabezpieczenia, takie jak filtrowanie i ustandaryzowane przetwarzanie danych. Możesz również dostosować kod do swojego projektu, uwzględniając swoje indywidualne potrzeby i wymagania bezpieczeństwa

Podsumowanie

Formularze są niezwykle ważnym elementem interakcji użytkownika w stronach internetowych. W tym obszernym wpisie blogowym przedstawiliśmy kompletny przewodnik dotyczący tworzenia formularzy w HTML. Od podstawowej struktury formularza po zaawansowane techniki walidacji danych i stylizacji formularzy, omówiliśmy wszystkie istotne aspekty. Praktyczne przykłady kodu pomogą Ci lepiej zrozumieć implementację różnych typów formularzy.

To top