Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save webbash/5cccbffdd9573f6a48bb89caeacb77bb to your computer and use it in GitHub Desktop.
Save webbash/5cccbffdd9573f6a48bb89caeacb77bb to your computer and use it in GitHub Desktop.
<?php
// Скрипт формирования уникального ключа формы
session_start();
if($_SESSION["verify"])
{
unset($_SESSION["verify"]);
}
$_SESSION["verify"]=md5(uniqid(rand(),1));
header('Content-Type: text/html; charset=utf-8');
session_start();
/*
* Для защиты используется пустое поле с атрибутом Name=url и спрятаное с помощью css (type=text)
* Если бот заполняет это поле, мы блокируем его с помощью Сессий.
* */
if (isset($_POST['url']) && $_POST['url'] == '') {
// Если есть сессия с Ip адресом и она равна disabled то прекращаем выполнение скрипта
if($_SESSION[$_SERVER['REMOTE_ADDR']] == 'disabled')
{
die("Запрещен доступ");
}
//Защита от подмены с помощью сессий
if ($_SESSION["verify"]<>$_POST["verify"]){die("Заблокировать, сессия не совпадает со значением из скрытого элемента формы");}
unset($_SESSION["verify"]);
// Валидируем данные и очищаем их от пробелов и специальных символов
$resultField = array();
foreach($_POST as $key => $field)
{
if(htmlspecialchars($field))
{
$resultField[$key] = htmlspecialchars($field);
}
}
// Скрипт отправки письма
$headers = 'From: info@'.$_SERVER['SERVER_NAME'] . "\r\n" .
'Reply-To: info@'.$_SERVER['SERVER_NAME'] . "\r\n" .
'x-precedence: bulk'.
'X-Mailer: PHP/' . phpversion();
$to = "[email protected] ,[email protected] , [email protected]";
if($resultField['action'] == "features")
{
if (isset($resultField['name']) && isset($resultField['email'])) {
$message = "E-mail: ".$resultField['email']."\r\nИмя: ".$resultField['name'];
$subject = "Новый запрос на получение особых условий";
$status = mail($to, $subject, $message, $headers);
if($status)
{
header("Location: /");
} else {
die("Ошибка отправки сообщения");
}
}
} else if($resultField['action'] == "feedback")
{
if (isset($resultField['subject']) && isset($resultField['telephone'])) {
$message = "Тема: ".$resultField['subject']."\r\nТелефон: ".$resultField['telephone'];
$subject = "Контактная форма - новая заявка";
$status = mail($to, $subject, $message, $headers);
if($status)
{
header("Location: /");
} else {
die("Ошибка отправки сообщения");
}
}
}
} else {
// Блокировка если заполнили скрытое поле
$_SESSION[$_SERVER['REMOTE_ADDR']] = 'disabled';
die("Вы заблокированы как спам-бот");
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment