@marinajo

Как вернуть данные после обработки POST?

Есть форма, с методом пост, которая отправляет данные в файл check.php
В этом файле данные обрабатываются, и добавляются в БД
Но есть проверки, типо
if($name < 5) {
  echo "Имя должно быть больше 5 символов";
  exit();
}

//в конце страницы редирект на главную
header('Location: /');

Если в форме имя будет меньше 5, то мне выведет этот текст, но он будет на странице check.php, на которой ничего нет, так вот, как мне передать этот текст, чтобы я мог вывести его на главной странице
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Для начала, обработка ошибок не должна ничего выводить в месте где возникла ошибка. Ошибки всегда накапливаются в переменной (обычно в массиве), в конце блока проверок проверяется есть ли ошибки в накопительной переменной, и уже исходя из логики идет либо запись в бд, либо возврат ошибок пользователю.

В случае аякса возвращается json с ошибками, хорошей практикой будет завести отдельное поле error, которое служит для яваскрипта сигналом обработки ошибки, и поле, содержащее текст ошибки. После вывода ошибки через echo, скрипт завершают - exit(); В яваскрипте аякса отправленные данные попадают в переменную, прописанную как аргумент success функции - success(data){...}

В случае субмита формы - массив с ошибками пишется в сессию, туда же записываются все принятые значения из $_POST, чтобы на исходной форме пользователю не приходилось снова все вписывать в поля. Ну и выполняется редирект на форму, поля пишутся из сессии, выводится ошибка из сессии, сессия чистится. Считается хорошим тоном поставить exit(); после редиректа, хотя в современных версиях пхп скрипт завершается автоматически.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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