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

Правильный подход по работе с form?

Добрый день.
Подскажите пожалуйста, как правильно проверить форму перед отправкой.
Я новичок в PHP.

Есть форма:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
<form action='test.php' method="post" enctype="multipart/form-data">
    <p>
        <input type="checkbox" name="s" value="квадрат">
        <label for="checkbox">Квадрат</label>
    </p>
    <input type="file" accept="text/plain" name="files"/>
    <input type="submit" name="submit" value="OK"/>
</form>
</body>
</html>


Как правильно проверить чекбокс и поле для загрузки файлов перед отправкой на test.php?
Что то типо с появлением сообщения после/перед чекбоксом.

Я пытался конечно что-то мудрить с $_POST, ну у меня все равно летит test.php

Так же пробовал на test.php проверять $_POST и если он отсутствует, то делал header("Location: /"); но вывод ошибки у чекбокса (что он типо не отмечен) у меня не получается сделать.

Подскажите пожалуйста, какой лучше использовать подход. Какой нибудь примерчик был бы вообще божественно. Спасибо за понимание.
  • Вопрос задан
  • 117 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@entermix
Подскажите пожалуйста, как правильно проверить форму перед отправкой.

На PHP? Никак, используйте JavaScript

Чтобы сделать проверку на PHP, но после отправки формы, можно сделать как то так:

<?php

$errors = array();
 
if (isset($_POST['submit'])){
    if (!isset($_POST['s'])){
        $errors[] = 'Вы должны поставить галочку';
    }
}


?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
</head>
<body>
<? if (count($errors) > 0): ?>
<ul>
    <? foreach ($errors as $error): ?>
        <li><?= $error; ?></li>
    <? endforeach; ?>
</ul>
<? endif; ?>
<form action="" method="post" enctype="multipart/form-data">
    <p>
        <input type="checkbox" name="s" value="квадрат"/>
        <label for="checkbox">Квадрат</label>
    </p>
    <input type="file" accept="text/plain" name="files"/>
    <input type="submit" name="submit" value="OK"/>
</form>
</body>
</html>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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