PHP обратная связь. Антиспам
Хочу настроить обратную связь, чтобы спам боты не присылали. знаю что они запросами фигачат. просто много спама приходит. Сразу скажи, что не силён в PHP. знаю что есть методы "нажатия клавиш", "невидимые" и "фейковые" блоки. но как реализовать в своём случае, не знаю.
Прошу помощи у знатоков php. Спасибо.
<section class="q222">
<div class="q333">
<h3 class="q444">Обратная связь</h3>
<form class="form1" action="telegram.php" method="POST">
<div class="form__group">
<input class="form__input" name="user_name" type="text" id="user_name" placeholder="Имя" required=""> </div>
<div class="form__group">
<input class="form__input" name="user_phone" type="text" id="user_phone" placeholder="Телефон или e-mail" required=""> </div>
<div class="form__group">
<textarea class="form__textarea" name="user_text" id="user_text" placeholder="Сообщение..." required=""></textarea>
</div>
<div class="text-right">
<button class="btn1" type="submit" style="color: white">Отправить</button>
</div>
</form>
</div>
</section>
<?php
/* https://api.telegram.org/botXXXXXXXXXXXXXXXXXXXXXXXX/getUpdates,
где, XXXXXXXXXXXXXXXXXXXXXXX - токен вашего бота, полученный ранее */
$name = $_POST['user_name'];
$phone = $_POST['user_phone'];
$email = $_POST['user_text'];
$token = "XXXXXXXXXXXXXXXXXXXXXXX ";
$chat_id = "-XXXXXXXXXX";
$arr = array(
'Имя пользователя: ' => $name,
'Телефон: ' => $phone,
'Сообщение: ' => $email
);
foreach($arr as $key => $value) {
$txt .= "<b>".$key."</b> ".$value."%0A";
};
$sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");
if ($sendToTelegram) {
echo "<html><head><meta http-equiv='Refresh' content='1; URL=index.html".$_SESSION['id']."'></head><body><style> body {text-align: center; font-size: 52px; font-family: 'Montserrat', sans-serif;width: 100%; padding:20px 1px 0;} </style>Вы будете перемещены через 1 сек.</body></html>";//отправляем пользователя назад
} else {
echo "Error";
}
?>
Ответы (1 шт):
Автор решения: Тимур
→ Ссылка
Этот вариант подойдёт против элементарных ботов
Создаёте уникальный токен на главной странице, откуда будет идти запрос
$rand = rand(10000,99999);
$token = $rand.':'.md5($rand."Ваш уникальный ключ");
Передаёте его вместе с формой, например в hidden
<input type = "hidden" name = "token" value = <?=$token?> >
В файле, где принимаете запрос, уже проверяете валидность токена
$token = explode(':', $_REQUEST['token']);
$rand = $token[0];
$hash = $token[1];
if($hash != md5($rand."Ваш уникальный ключ")){
die("Неверный токен");
}