Валидация формы PHP

358
21 декабря 2016, 04:11

Помогите пожалуйста дописать код. Мне нужно к этому коду дописать проверку формы на обязательное заполнение атрибутов input (name, phone).

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (isset($_POST['name'])) {$name = $_POST['name'];}
    if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
    if (isset($_POST['email'])) {$email = $_POST['email'];}
    if (isset($_POST['comment'])) {$comment = $_POST['comment'];}
    if (isset($_POST['formData'])) {$formData = $_POST['formData'];}
    $to = "sevenpav@gmail.com"; 
    $sendfrom   = "hello@zelsmoke.ru"; 
    $headers  = "From: " . strip_tags($sendfrom) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
    $subject = "$formData";
    $message = "$formData
 <b>Имя пославшего:</b> $name
<b>Телефон:</b> $phone
 <b>Почта:</b> $email
<b>Комментарий:</b> $comment";
    $send = mail ($to, $subject, $message, $headers);
    if ($send == 'true')
    {
    echo '<center>
Спасибо за заказ! В течение 10 минут с Вами свяжется менеджер.
</center>';
    }
    else
    {
    echo '<center>
<b>Ошибка. Сообщение не отправлено!</b>
</center>';
    }
} else {
    http_response_code(403);
    echo "Попробуйте еще раз";
}?>
Answer 1

валидация происходит добавление проверочных условий. для php > 5.2 вот это:

filter_var($mail, FILTER_VALIDATE_EMAIL)

Обычно используют регулярные выражения.

if(preg_match("/[0-9a-z_\.\-]+@[0-9a-z_\.\-]+\.[a-z]{2,4}/i", $email))
{
// проверка успешно пройдена
}

Для e-mail иногда проверяют доступность получения писем на указанный домен ( проверка МХ записей). Кроме того, при указании

<input type="email" pattern="[^@]+@[^@]+\.[a-zA-Z]{2,6}">

и

<input type="tel" pattern="(\+?\d[- .]*){7,13}" > 

первично проверка будет происходить на стороне клиента.

READ ALSO
Заменить индексы на значение из БД

Заменить индексы на значение из БД

Доброго времени суток господаимеется следующее foreach ($result_list as $entry2) { $row[$entry2["id"]][] = $entry2["value_obj"]; }

357
Фильтрация записей в Modx revo

Фильтрация записей в Modx revo

Подскажите как сделать фильтр по tv: proc <select name="proc"><option></option></select> по input фильтрует, если вводим а по селект не могу понять как форма...

607
Не удается задать тип SOAP-контейнеру

Не удается задать тип SOAP-контейнеру

Вот так я создаю контейнер:

354