[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 pytanieif(!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
Prześlij komentarz
Dzięki za komentarz!