MaXComp
@MaXComp
интересуюсь frontend html+css+JS+php. Linux, C

Как правильно из того, что есть слепить форму обратной связи?

HTML
<form action="/feeldback.php" method="post">
                    <fieldset>
                        <legend>
                            <h2>Сделать заказ</h2>
                        </legend>
                        <label for="tel">Номер телефона</label>
                        <input type="tel" id="tel" name="tel" pattern="[0-9]{1}-[0-9]{3}-[0-9]{3}-[0-9]{2}-[0-9]{2}" placeholder="Формат номера X-XXX-XXX-XX-XX">
                        <div>
                            <label for="email">Email</label>
                            <input type="email" id="email" name="email">
                        </div>
                        <div>
                            <textarea name="msg" class="msg" rows="3" placeholder="Ваше сообщение"></textarea>
                        </div>
                    </fieldset>
                    <div class="buttons">
                        <input type="submit" value="ОТПРАВИТЬ СООБЩЕНИЕ">
                    </div>
                </form>

PHP
<?php 
$sendto   = "mail@mail.ru"; // почта, на которую будет приходить письмо
$username = $_POST['name'];   // сохраняем в переменную данные полученные из поля c именем
$usertel = $_POST['tel']; // сохраняем в переменную данные полученные из поля c телефонным номером
$usermail = $_POST['email']; // сохраняем в переменную данные полученные из поля c адресом электронной почты
$usercomment = $_POST['msg']; // сохраняем в переменную данные полученные из поля c сообщением

// Формирование заголовка письма
$subject  = "Новое сообщение с сайте www.ru";
$headers  = "From: " . strip_tags($usermail) . "\r\n";
$headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";

// Формирование тела письма
$msg  = "<html><body style='font-family:Arial,sans-serif;'>";
$msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>Cообщение с сайта</h2>\r\n";
$msg .= "<p><strong>От кого:</strong> ".$username."</p>\r\n";
$msg .= "<p><strong>Почта:</strong> ".$usermail."</p>\r\n";
$msg .= "<p><strong>Телефон:</strong> ".$usertel."</p>\r\n";
$msg .= "<p><strong>Сообщение:</strong> ".$usercomment."</p>\r\n";
$msg .= "</body></html>";

// отправка сообщения
if(@mail($sendto, $subject, $msg, $headers)) {
  echo "";
} else {
  echo "";
}
?>


Код CSS опустим. Форма такого вида, полу-рабочая. Происходит и отправка сообщения и его доставка, но с проверкой косяки.

1) У формы есть проверка, реализованная с помощью html5, и она работает, если заполнить поля не правильно. НО, если их совсем не заполнить, форма успешно отправляется.

2) Не пойму как остаться на той же странице отправки формы. Т.е. мне не нужно что бы после отправки меня перекидывало на feeldback.php. Просто код php засунуть внутрь contact.php ? А как ему тогда отправить данные?

В интернете куча информации, но все формы какие-то недоделанные. Ничего хорошего не нашел. Может подскажите чем сами пользуетесь? Мне тупо нужно на сайт html+css прикрутить форму обратной связи.
  • Вопрос задан
  • 285 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Silm
Чтобы нельзя было отправить пустую форму: htmlbook.ru/html/input/required
Но валидация на стороне клиента может быть намерено обойдена, при желании. Если это важно, то используйте валидацию на стороне сервера (в обработчике формы), в дополнение.

Код формы и код обработчика может быть в одном файле, в action атрибуте формы надо указать адрес самой формы или вообще убрать этот атрибут. Но можно и не совмещать файлы, просто сделать редирект в обработчике на форму. Гуглится так: PHP редиркет.
Ответ написан
Комментировать
mrdubz
@mrdubz
front end developer
Прикрути валидацию на стороне клиента
https://habrahabr.ru/post/180279/
Ответ написан
@newobj
добавь required к нужным полям
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы