@sadnezz
it noob

Как добавить проверку заполнения в PHP скрипт отправки почты?

Есть скрипт, работает, но пропускает пустые поля, а при прямом обращению к php файлу отправляет письмо без данных.
<?php
 if (isset($_POST['contact_name'])) {$contact_name = $_POST['contact_name'];}
 if (isset($_POST['contact_tel'])) {$contact_tel = $_POST['contact_tel'];}
 if (isset($_POST['contact_email'])) {$contact_email = $_POST['contact_email'];}
 if (isset($_POST['contact_type'])) {$contact_type = $_POST['contact_type'];}
 if (isset($_POST['contact_goods'])) {$contact_goods = $_POST['contact_goods'];}
 if (isset($_POST['contact_date'])) {$contact_date = $_POST['contact_date'];}
 if (isset($_POST['contact_address'])) {$contact_address = $_POST['contact_address'];}

 $address = "mail@mail.mail";

 $mes = "Тема: Заказ с сайта!\nТелефон: $contact_tel\nИмя: $contact_name\nПочта: $contact_email\nТип: 
 $contact_type\nТовар: $contact_goods\nАдрес: $contact_address\n$contact_date";

 $sub='Заказ с сайта'; 
 $email='mail@mail.mail'; 
 $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email");

 ini_set('short_open_tag', 'On');
 header('Refresh: 3000; URL=index.html');
?>

Как добавить проверку на заполнение хотя бы одного поля? Появилась активность от ботов, которые заполняют имя + почту.
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
if (isset($_POST['contact_name'])) {$contact_name = $_POST['contact_name'];}
if (isset($_POST['contact_tel'])) {$contact_tel = $_POST['contact_tel'];}
if (isset($_POST['contact_email'])) {$contact_email = $_POST['contact_email'];}
if (isset($_POST['contact_type'])) {$contact_type = $_POST['contact_type'];}
if (isset($_POST['contact_goods'])) {$contact_goods = $_POST['contact_goods'];}
if (isset($_POST['contact_date'])) {$contact_date = $_POST['contact_date'];}
if (isset($_POST['contact_address'])) {$contact_address = $_POST['contact_address'];}

if (check('contact_type') || check('contact_goods') || check('contact_date') || check('contact_address')) {
    $address = "mail@mail.mail";

    $mes = "Тема: Заказ с сайта!\nТелефон: $contact_tel\nИмя: $contact_name\nПочта: $contact_email\nТип: 
    $contact_type\nТовар: $contact_goods\nАдрес: $contact_address\n$contact_date";

    $sub='Заказ с сайта'; 
    $email='mail@mail.mail'; 
    $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email");
 
    ini_set('short_open_tag', 'On');
    header('Refresh: 3000; URL=index.html');
}

function check($key) {
    return isset($_POST[$key]) && !empty($_POST[$key]);
}

Ну это если решение "в лоб". Вообще почитайте про filter_input() и extract().
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
megafax
@megafax
web-программист
!empty() вместо isset()
И проверять дальше на хотя бы один параметр в POST
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы