
Prosty formularz kontaktowy w PHP
HTML + CSS PHP + MySQL Data aktualizacji: 04.08.2020Prosty formularz kontaktowy w PHP
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?
Ranking hostingów i domen
Sprawdź najlepsze oferty hostingowe i najtańsze domeny w 2021 roku.
Autor: Bartosz Stefanicki. Data publikacji: 18.05.2010. Tagi: css, formularze, html, php, poczta, skrypty. Źródło obrazka porady: własne.
58 komentarzy