@marinajo

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽