Я работаю над проектом PHP, и у меня есть файл под названием login.php. Этот файл содержит HTML-код, который в основном состоит из формы, которая имеет 2 входа (используется для электронной почты и пароля) и кнопку отправки. Перед HTML существует PHP-скрипт, который проверяет правильность ввода (не пустой, пользователь существует в db). Я использую скрытое поле ввода (называемое formubmitted), чтобы проверить, нажал ли пользователь кнопку отправки. Если значения действительны, PHP-скрипт перенаправляет пользователя на домашнюю страницу, если нет, скрипт PHP печатает HTML-div, в котором я сохраняю сообщение об ошибке, а затем HTML для формы.
Я бы хотел напечатать только ошибку div, а не остальную часть HTML, и для этого я мог бы использовать функцию exit (). Теперь я не знаю, является ли это хорошей практикой, я искал в Интернете, но не нашел ничего полезного. Я был бы признателен, если бы кто-нибудь мог сказать мне, нормально ли это делать. Благодаря!
Вот как выглядит мой код:
<?php if (isset($_POST['formsubmitted'])) { //check if the email and password are valid if (valid) { header("Location:home.php"); } else { echo "<div id='error-section'>"; echo "message"; echo "</div>" } } exit(); ?> <!DOCTYPE html> <html> ............... </html>
Чтобы ответить на ваш вопрос: я лично не буду использовать операторы exit()
любом месте вашего кода (если только это не будет после echo(json_encode(array())
ответа REST API echo(json_encode(array())
. Это просто может вызвать много головных болей по дороге с ошибками отладки.
(Он также может нарушать \ob_*()\
вызовы, а также большинство модулей отображения фреймворка – потому что структура не сможет перейти к его эхо-сообщениям.)
У меня всегда есть div .errors
в моих формах:
<?php if (isset($errors) && !empty($errors): ?> <?php foreach ($errors as $error): ?> <div class="alert alert-danger" role="alert"> <strong>Error: </strong> <?php echo $error['message'] ?> </div> <?php endforeach; ?> <?php endif; ?> <form> <!--- form here --> </form>
Таким образом, вы просто передаете массив $errors
в свою форму, и все работает honkey dory, и вы можете избежать использования exit()
– при использовании функции exit()
есть время и место, но поскольку он не дает вам сообщения или ничего не записывает может быть королевской болью, чтобы отлаживать позже.
В качестве заключительной заметки этот метод позволяет передать массив таким ошибкам:
array( 'first_name' => 'First Name Required', 'last_name' => 'Last Name Required', 'zip_code' => 'Must enter a valid zip code' )
Это позволяет вам, когда вы создаете свою форму, добавьте класс .error
в свои поля ввода, которые помогут вашим пользователям найти, какой из входных данных возник из-за проблемы – всегда приятно:
<input id="first_name" type="text" class="my_input_class<?php (isset($errors) && isset($errors['first_name'])) ? ' error' : '' ?>">
попробуйте следующее: (ОБНОВЛЕНО)
<?php if (isset($_POST['formsubmitted'])) { //check if the email and password are valid if (valid) { header("Location:home.php"); } else { die("<html> <head> <!-- ADD STUFF HERE IF YOU WANT--> </head> <body> <div id='error-section'>message</div> </body> </html>"); //you can use exit if you want too } } ?> <!DOCTYPE html> <html> ............... </html>
Лучшей практикой является показать форму с сообщением об ошибке, чтобы у пользователя появилась возможность попробовать еще раз. Недействительные учетные данные могут иметь несколько значений. В любом случае вы не должны просто показывать сообщение об ошибке и тупик для пользователя. Предоставьте содержательное сообщение об ошибке с возможностью повторить попытку.