[PHP|HTML] Formularz kontaktowy

Formularz kontaktowy to nieodzowny element praktycznie każdej strony www. Ułatwia on komunikację między użytkownikami serwisu, a właścicielem/administratorem. Ten wpis postanowiłem poświęcić tym, którzy jeszcze sami takiego formularza nie umieją stworzyć i zrobić to za Was. Do obsługi formularza wykorzystamy funkcję napisaną w artykule Jak wysłać maila w PHP.

Pierwszą rzeczą jaką należy zrobić to stworzenie formularza HTML:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Formularz kontaktowy</title>
</head>
<body>
<div>
<form action="" method="post">
<p><label for="name">Imię i nazwisko</label><input type="text" name="name" id="name" placeholder="Imię i nazwisko" required /></p>
<p><label for="email">E-mail *</label><input type="email" name="email" id="email" placeholder="E-mail" required /></p>
<p><label for="message">Wiadomość *</label><textarea id="message" rows="4" cols="50"></textarea></p>
<p><label for="answer"<?= $answer; ?></label><input type="text" name="answer" id="answer" placeholder="<?= $answer; ?>" required /></p>
<p><input type="submit" value="Wyślij wiadomość" /></p>
</form>
<p>Aby wysłać wiadomość wypełnij pola oznaczone *.</p>
</div>
</body>
</html>

W powyższym formularzu utworzone zostało dodatkowe pole "answer", w którym trzeba będzie wpisać poprawną odpowiedź na pytanie zdefiniowane w zmiennej $question inaczej wiadomość nie zostanie wysłana. Jest to taka prowizoryczna ochrona przed robotami wysyłającymi formularze. Ostylowanie formularza pozostawiam czytelnikowi.

Obsługa formularza

Skrypt do obsługi formularza jest prosty i sprowadza się do utworzenia kilku warunków oraz wywołania funkcji send_mail. Jak już wcześniej wspominałem, w formularzu tym wykorzystamy funkcję send_mail napisaną we wcześniejszym artykule.

<?php

$contact_mail = ''; // E-mail, na który mają być wysłane wiadomości
$subject = 'Wiadomość z formularza'; // Temat wiadomości
$question = 'Stolicą Polski jest?'; // Pytanie zabezpieczające
$answer = 'Warszawa'; // Odpowiedź na pytanie

if(!isset($_POST['message'])): ?>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Formularz kontaktowy</title>
</head>
<body>
<div>
<form action="" method="post">
<p><label for="name">Imię i nazwisko</label><input type="text" name="username" id="username" placeholder="Imię i nazwisko" /></p>
<p><label for="email">E-mail *</label><input type="email" name="email" id="email" placeholder="E-mail" required /></p>
<p><label for="message">Wiadomość *</label><textarea id="message" rows="4" cols="50"></textarea></p>
<p><label for="answer"<?= $answer; ?></label><input type="text" name="answer" id="answer" placeholder="<?= $answer; ?>" required /></p>
<p><input type="submit" name="submit" value="Wyślij wiadomość" /></p>
</form>
<p>Aby wysłać wiadomość wypełnij pola oznaczone *.</p>
</div>
</body>
</html>

<?php else: ?>

<?php

if(!empty($_POST['email']) && !empty($_POST['message'])) {

if(strlen($_POST['email']) >= 6) {

if(strlen($_POST['email']) <= 30) {

if(strlen($_POST['message']) >= 3) {

if(strlen($_POST['message']) <= 3000) {

if($_POST['answer'] === $answer) {

$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
$name = $_POST['name'] !== '' ? htmlentities($_POST['name'], ENT_QUOTES) : $email;

if(send_mail($name, $email, $contact_mail, $subject, $message, $format = 'text')) {

echo '<p>Wiadomość została wysłana.</p>';

}

else {

echo '<p>Nie udało się wysłać wiadomości.</p>';

}

}

else {

echo '<p>Odpowiedź na pytanie jest niepoprawna.</p>';

}

}

else {

echo '<p>Treść wiadomości jest zbyt długa.</p>';

}

}

else {

echo '<p>Treść wiadomości jest zbyt krótka.</p>';

}


}

else {

echo '<p>E-mail jest zbyt długi.</p>';

}

}

else {

echo '<p>E-mail jest zbyt krótki.</p>';

}

}

else {

echo '<p>Pola E-mail i Wiadomość muszą zostać wypełnione.</p>';

}

?>

<?php endif; ?>

Komentarze

Popular

[HTML] Jak wstawić obrazek?

[C++] Jak obliczyć pole i obwód trapezu?

[PHP] Jak pobrać adres strony?