Недавно начал писать на php и немного еще не уверен в знаниях. Меня интересует нормально ли при обработке формы, например формы входа, отправлять сообщения об ошибках в супер-глобальный массив $_POST? Потому что форма может находиться в сайдбаре а обработчик в самом начале когда, и оттуда никак нельзя что то вывести в этой форме. Я додумался отправлять сообщения в $_POST['error'] и выводить их в форме в нужном месте, если эта переменная существует.
Скажите пожалуйста на практике так нормально делать? Или пользоваться какими-то другими вариантами?
Дениска Петров: а как тогда можно по другому это реализовать? если из обработчика не вариант выводить сообщения? Глобальные переменные? Или что то еще? Вы можете мне помочь?
Stalker_RED: ну смотрите. есть форма, она находится в середине контента. есть обработчик, функция, которая находится вверху файла, перед доктайпом. и как оттуда вывести сообщение об ошибке в форму, которая находится в середине контента?
мда таких извращений Уве Болл Не видал
вам нужно обрабатывать в форму в обработчике
заносить ошибки в сессию и редиректить его обратно на форму
и проверять есть ли что то в сессии если есть то выводить как ваше извращенное чувство вкуса желает
а потом удалять метку в сессии
thehighhomie: тогда попробуйте начать работать с framework на php. symfony например. Там будет более понятно. Но еще попробуйте перечитать весь php.net на русском. Это будет очень хорошо. Не спешите пока писать, то что вы хотите. Вы еще не понимаете взаимодействие клиент-сервер и что такое вообще post.
thehighhomie:
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if(empty($_POST['field_one'}) || $_POST['field_two'})){
$_SESSION['error] = 'error text';
header("Location: $_SERVER[HTTP_'REFERER']")
exit();
}else{
// делаем еще что то
}
}else{
header("Location: $_SERVER[HTTP_'REFERER']");
exit();
}
ну а на странице
первой строчкой
стартуем сессию
session_start();
//а там где нужно выводишь сообщение
if(isset($_SESSION['error'])):
<?=$_SESSION['error'];?>
endif;
НЕ ЗАБЫВАЕМ ПРО UTF-8 без BOM
Скажите пожалуйста на практике так нормально делать?
- Нет.
Или пользоваться какими-то другими вариантами?>
К примеру. Я бы сделал так. Для начала отделил обработчик от представления. При обработки формы отправлял бы post'ом ajax запрос на обработчик, где происходила бы вся валидация. С обработчика JSON'ом отправлял бы ответ. Хотя существует еще масса других вариантов.