Jak zrobić prosty formularz kontaktowy w PHP

Tworzenie prostego formularza kontaktowego w PHP obejmuje zarówno frontend (HTML) jak i backend (PHP). Formularz zbiera dane od użytkownika (np. imię, adres e-mail, wiadomość), a następnie za pomocą PHP przetwarza te dane i wysyła je na określony adres e-mail.

Kroki:

  1. Stwórz formularz w HTML.
  2. Przygotuj skrypt PHP do obsługi formularza.
  3. Wyślij dane z formularza za pomocą funkcji mail().

Przykład formularza kontaktowego:

1. Formularz HTML (frontend):

Zacznij od stworzenia pliku HTML, który będzie zawierał formularz. Formularz wysyła dane metodą POST do skryptu PHP.

<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Formularz kontaktowy</title>
</head>
<body>
    <h2>Skontaktuj się z nami</h2>
    <form action="kontakt.php" method="POST">
        <label for="name">Imię:</label><br>
        <input type="text" id="name" name="name" required><br><br>
        
        <label for="email">E-mail:</label><br>
        <input type="email" id="email" name="email" required><br><br>
        
        <label for="message">Wiadomość:</label><br>
        <textarea id="message" name="message" rows="5" required></textarea><br><br>
        
        <input type="submit" value="Wyślij">
    </form>
</body>
</html>

2. Skrypt PHP (backend):

Ten skrypt odbierze dane z formularza i wyśle je na podany adres e-mail.

Plik kontakt.php:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Pobieranie danych z formularza
    $name = htmlspecialchars(trim($_POST['name']));
    $email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
    $message = htmlspecialchars(trim($_POST['message']));

    // Walidacja danych
    if (!empty($name) && filter_var($email, FILTER_VALIDATE_EMAIL) && !empty($message)) {
        // Dane do wysłania
        $to = "twojadres@example.com"; // Podaj tutaj adres e-mail, na który mają być wysyłane wiadomości
        $subject = "Nowa wiadomość od: $name";
        $body = "Imię: $name\n";
        $body .= "E-mail: $email\n\n";
        $body .= "Wiadomość:\n$message";

        $headers = "From: $email\r\n";
        $headers .= "Reply-To: $email\r\n";

        // Wysyłanie e-maila
        if (mail($to, $subject, $body, $headers)) {
            echo "Wiadomość została wysłana pomyślnie!";
        } else {
            echo "Wystąpił problem podczas wysyłania wiadomości.";
        }
    } else {
        echo "Proszę poprawnie wypełnić wszystkie pola.";
    }
} else {
    echo "Formularz nie został poprawnie przesłany.";
}
?>

Jak to działa:

  • Formularz HTML wysyła dane do pliku kontakt.php metodą POST.
  • Skrypt PHP odbiera dane, waliduje je (czy imię nie jest puste, e-mail jest poprawny, a wiadomość nie jest pusta).
  • Jeśli wszystko jest poprawne, skrypt używa funkcji mail(), aby wysłać wiadomość e-mail na podany adres.
  • Funkcja mail() w PHP wysyła e-mail za pomocą serwera SMTP skonfigurowanego na serwerze, na którym jest hostowana strona.

Ważne uwagi:

  1. Walidacja danych: Skrypt weryfikuje dane, aby zapobiec wysyłaniu pustych lub niepoprawnych formularzy. Funkcja filter_var() waliduje adres e-mail, a htmlspecialchars() zapobiega atakom XSS.
  2. Konfiguracja serwera: Aby funkcja mail() działała poprawnie, serwer musi być skonfigurowany do wysyłania wiadomości e-mail (np. poprzez Sendmail lub inne narzędzie SMTP). W środowiskach lokalnych (np. XAMPP) możesz potrzebować dodatkowej konfiguracji, aby funkcja mail() działała poprawnie.

Jak zaimplementować formularz na stronie?

  1. Utwórz plik HTML z formularzem (np. index.html).
  2. Utwórz plik PHP obsługujący formularz (np. kontakt.php).
  3. Wgraj oba pliki na swój serwer (np. za pomocą FTP lub poprzez panel hostingowy).
  4. Upewnij się, że serwer jest skonfigurowany do obsługi PHP i wysyłania e-maili.

To bardzo prosty formularz kontaktowy. W prawdziwych projektach warto dodać dodatkowe zabezpieczenia, takie jak CAPTCHA, aby chronić formularz przed spamem, oraz lepszą walidację danych po stronie serwera.

Szukasz taniego i dobrego hostingu dla swojej strony www? - Sprawdź Seohost.pl