Задать вопрос
@RuSegment

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

Не разбираюсь в php. Буду признателен, если в ответе будут указаны все мелкие детали.
Есть форма обратной связи. Хочу поставить над кнопкой "Отправить" галочку с подписью. Таким способом решить две проблемы:
1) Требование закона (о защите персональных данных)
2) Надеюсь боты перестанут слать спам на почту
Если "галочка" не поможет спастись от ботов, прошу помочь решить и эту проблему...

<div class="form-01 consult-form js-consult-form__content">
							<h2 class="form-01__title">Обратная связь</h2>
							
							<form class="form-01__form" name="contact-form" method="post" action="https://###.ooo/assets/php/contact.php">
								<div class="form__item form__item--03">
									<input type="text" name="name" placeholder="Ваше Имя"/>
								</div>
								<div class="form__item form__item--03">
									<input type="text" name="phone" placeholder="Ваш Телефон"/>
								</div>
								<div class="form__item form__item--03">
									<input type="email" name="email" placeholder="Ваш Email"/>
								</div>
								<div class="form__item">
									<textarea rows="5" name="message" placeholder="Сообщение"></textarea>
								</div>
								<div class="form__button">
								    <button type="submit" class="btn btn-primary btn-w180">Отправить</button>
								</div>
							</form>
							
						</div>


<?php
	
	$name = $_POST['name'];
	$phone = $_POST['phone'];
	$email = $_POST['email'];
	$message = $_POST['message'];
	
	$formcontent="Имя: $name\n\nТелефон: $phone\n\nEmail: $email\n\nСообщение: $message";
	
	// Вводим адрес электронной почты
	$recipient = "mail@###.ooo";
	
	$subject = "### ###";
	
	$mailheader = "From: $email\r\n";
	$mailheader .= "Reply-To: $email\r\n";
	$mailheader .= "MIME-Version: 1.0\r\n";
	
	$success = mail($recipient, $subject, $formcontent, $mailheader);
	
	if ($success == true){
	
?>
	
	<script language="javascript" type="text/javascript">
		alert('Спасибо! Мы ответим Вам как можно раньше. Это в наших же интересах. Вы всегда можете обратиться по телефону: +7 922 #### ###');
		window.location = "https://###.ooo/index.html";
	</script>
	
<?php
	
	} else {
	
?>

    <script language="javascript" type="text/javascript">
		alert('Сообщение не было отправлено. Возможно это наша ошибка. Попробуйте ещё раз и укажите эту проблему в сообщении. Вы всегда можете обратиться по телефону: +7 922 #### ###. Спасибо за Ваше терпение.');
		window.location = "https://###.ooo/index.html";
    </script>
	
<?php

    }
    
?>
  • Вопрос задан
  • 1951 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
@pmozil
В форму добавить чекбокс,но насколько помню,мне не удалось с помощью атрибута required защититься от спама.
<div class="form-01 consult-form js-consult-form__content">
              <h2 class="form-01__title">Обратная связь</h2>
              
              <form class="form-01__form" name="contact-form" method="post" action="https://###.ooo/assets/php/contact.php">
                <div class="form__item form__item--03">
                  <input type="text" name="name" placeholder="Ваше Имя"/>
                </div>
                <div class="form__item form__item--03">
                  <input type="text" name="phone" placeholder="Ваш Телефон"/>
                </div>
                <div class="form__item form__item--03">
                  <input type="email" name="email" placeholder="Ваш Email"/>
                </div>
                <div class="form__item">
                  <textarea rows="5" name="message" placeholder="Сообщение"></textarea>
                </div>
                <div class="form__button">
                    <button type="submit" class="btn btn-primary btn-w180">Отправить</button>
                </div>
<div>
 <input type="checkbox" id="agree" name="agree"
         required>
  <label for="agree">Текст о защите данных</label>
</div>
              </form>
            </div>

Защиту от спама реализовал с помощью скрытых(от пользователя,но спам-бот их видит) полей и проверкой на заполнение этих полей.Если они заполнены,то это бот,так как только он может их видеть.
Например создать
$name2 = $_POST['name2'];
и
$email = $_POST['email'];
и проверка php:
if ($_POST['name2']!='' || $_POST['email2']!=''){
  die('Сообщение не отправлено,так как ты бот');
}

и надо добавить эти поля в HTML документ,но прописать им свойство display:none в css файле.
<div class="form-01 consult-form js-consult-form__content">
              <h2 class="form-01__title">Обратная связь</h2>
              
              <form class="form-01__form" name="contact-form" method="post" action="https://###.ooo/assets/php/contact.php">
                <div class="form__item form__item--03">
                  <input type="text" class="validator" name="name2" placeholder="Ваше Имя">
	    			<input type="text" class="validator" name="email2" placeholder="Ваш Email">
 
<input type="text" name="name" placeholder="Ваше Имя"/>
                </div>
               <div class="form__item form__item--03">
                  <input type="text" name="phone" placeholder="Ваш Телефон"/>
                </div>
                <div class="form__item form__item--03">
                  <input type="email" name="email" placeholder="Ваш Email"/>
                </div>
                <div class="form__item">
                  <textarea rows="5" name="message" placeholder="Сообщение"></textarea>
                </div>
                <div class="form__button">
                    <button type="submit" class="btn btn-primary btn-w180">Отправить</button>
                </div>
<div>
 <input type="checkbox" id="agree" name="agree"
         required>
  <label for="agree">Текст о защите данных</label>
</div>
              </form>
            </div>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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