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

Что не так с формой обратной связи (см.код)?

Форму создал в пределах одного файла .php, когда код php был отдельно от файла формы, все работало. Сейчас заглохло...
<?php 
$sendto   = "fontalife@mail.ru"; // почта, на которую будет приходить письмо
$username = $_POST['name'];   // сохраняем в переменную данные полученные из поля c именем
$usertel = $_POST['tel']; // сохраняем в переменную данные полученные из поля c телефонным номером
$usermail = $_POST['email']; // сохраняем в переменную данные полученные из поля c адресом электронной почты
$usermsg = $_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> ".$usermsg."</p>\r\n";
$msg .= "</body></html>";

// отправка сообщения
if(@mail($sendto, $subject, $msg)) {
  echo "";
} else {
  echo "";
}
?>
<form action="" 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}" required placeholder="Формат номера X XXX XXXXXXX">
              <div class="half-width">
                <label for="email">Email</label>
                <input type="email" id="email" required name="email">
              </div>
              <div>
                <textarea name="msg" class="msg" rows="3" required placeholder="Ваше сообщение"></textarea>
              </div>
            </fieldset>
            <div class="buttons">
              <input type="submit" value="ОТПРАВИТЬ СООБЩЕНИЕ">
            </div>
          </form>
  • Вопрос задан
  • 234 просмотра
Пригласить эксперта
Ответы на вопрос 4
@frontender
я в php не оч, но где action? ссылка до php обработчика там должна быть.
Ответ написан
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
в action="" тега form должен быть адрес скрипта, который обрабатывает данные и отправляет. Php выполняется на сервере, так что куда-то придется отправлять в любом случае. Если Вы хотите в одном файле и генерировать форму и производить обработку пост запроса, то надо бы части кода засунуть в if(isset($_POST)){}else{}
Как-то так. Данный код работать и не должен.
Ответ написан
@Silm
Когда публикуете подобные вопросы пишите отображаемые ошибки или конкретно что и где не работает.

action="" - или уберите атрибут совсем или пропишите адрес формы.

Код обработчика у вас выполняется даже если форма не была отправлена и в результате, например:
// что будет присвоено переменной если форма еще не была отправлена?
$username = $_POST['name'];


Весь код обработчика должен отрабатывать только в том случае, если была прислана форма.
Ответ написан
Комментировать
sabramovskikh
@sabramovskikh
Проверить что был POST, проверить что данные не пусты, удалить теги и спец символы.
Лучше вообще сделать AJAX и проверить сначала на js, не будет перезагрузки страницы
Ответ написан
Ваш ответ на вопрос

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

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