Formularz kontaktowy to bardzo użyteczne narzędzie w rękach webmasterów. Dzięki niemu osoby odwiedzające daną stronę, mają możliwość kontaktu z właścicielem witryny. Zamiast uruchamiać osobny program pocztowy co jest niewygodne, wystarczy wypełnić kilka pól i zatwierdzić co spowoduje wysłanie e-maila.

1. Szkielet formularza

Tworzymy plik kontakt.php, który będzie odpowiedzialny za wyświetlenie formularza, komunikatów oraz wysłanie go pod wskazany adres e-mail. Do tego pliku wklejamy poniższy kod:

<?php
if (!isset($_POST['submit'])) {
?>

Jeżeli element submit nie istnieje, to wyświetlamy formularz kontaktowy.

<table>
<form action="" method="post">
<tr>
  <td>Imię i Nazwisko:</td>
  <td><input type="text" name="name"></td>
</tr>

<tr>
  <td>E-mail:</td>
  <td><input type="text" name="email"></td>
</tr>

<tr>
  <td>Treść wiadomości:</td>
  <td><textarea name="text"></textarea></td>
</tr>

<tr>
  <td> </td>
  <td><input type="submit" name="submit" value="Wyślij formularz"></td>
</tr>
</form>
</table>

Powyższy kod wyświetli formularz zawierający pola takie jak: imię i nazwisko, e-mail, treść wiadomości.

2. Skrypt obsługujący formularz

Część pierwsza jest już za nami, mamy szkielet prostego formularza kontaktowego który wysyła dane. Zobaczymy teraz, w jaki sposób je odebrać, przetworzyć i w przypadku powodzenia wysłać pod wskazany adres poczty elektronicznej.

<?php
if (isset($_POST['submit'])) {

// twoje dane
$email = 'twoj-mail@adres-strony.pl';

// dane z formularza
$name = $_POST['name'];
$email = $_POST['email'];
$text = $_POST['text'];

if(!empty($name) && !empty($email) && !empty($text)) {

// weryfikujemy wprowadzony w formularzu adres e-mail
function checkMail($checkmail) {
  if(filter_var($checkmail, FILTER_VALIDATE_EMAIL)) {
    if(checkdnsrr(array_pop(explode("@",$checkmail)),"MX")){
        return true;
      }else{
        return false;
      }
  } else {
    return false;
  }
}
?>

Stawiamy warunek który sprawdza, czy wszystkie pola formularza zostały wypełnione. W przypadku wyniku negatywnego skrypt zwróci komunikat o błędzie, inaczej przechodzimy do funkcji która zweryfikuje wprowadzony adres e-mail.

<?php
if (checkMail($email)) {
  //dodatkowe informacje: ip i host użytkownika
  $ip = $_SERVER['REMOTE_ADDR'];
  $host = gethostbyaddr($_SERVER['REMOTE_ADDR']);

  //tworzymy szkielet wiadomości
  //treść wiadomości
  $mailText = "Treść wiadomości:\n" . $text . "Od: $name, $email ($ip, $host)";

  //adres zwrotny
  $mailHeader = "From: $name <$email>";

  //funkcja odpowiedzialna za wysłanie e-maila
  @mail($email, 'Formularz kontaktowy', $mailText, $mailHeader) or die('Błąd: wiadomość nie została wysłana');

  //komunikat o poprawnym wysłaniu wiadomości
  echo 'Wiadomość została wysłana';
} else {
  echo 'Adres e-mail jest niepoprawny';
}

} else {
  // komunikat w przypadku nie powodzenia
  echo 'Wypełnij wszystkie pola formularza';
}
}
?>

Ustalamy nadawcę wiadomości - pokaże się on w kliencie pocztowym adresata, a także "wyszumiamy" funkcję mail() która odpowiedzialna jest za wysłanie maila, by w razie niepowodzenia został wyświetlony jedynie zdefiniowany przez nas komunikat o błędzie.

Jeśli natomiast wszystko pójdzie zgodnie z planem, tj. dane wprowadzone przez użytkownika przejdą pomyślnie walidację i zostaną wysłane - to informujemy o wysłaniu wiadomości. Zaistnieć może również sytuacja, w której użytkownik nie wypełni wszystkich pól formularza, wówczas informujemy go o tym fakcie.

Na koniec zapisujemy plik kontakt.php i wysyłamy go na serwer z włączoną funkcją mail(). Zakończyliśmy w tym momencie prace nad formularzem.

Czy powyższy skrypt okazał się dla Was pomocny? Czy znalazł u kogoś zastosowanie?

Autor: Bartosz Stefanicki. Data publikacji: 18.05.2010. Tagi: css, formularze, html, php, poczta, skrypty. Źródło obrazka porady: własne.

Ranking hostingów 2020

Komentarze