Лучшая практика для выхода PHP ()

Я работаю над проектом 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> 

Лучшей практикой является показать форму с сообщением об ошибке, чтобы у пользователя появилась возможность попробовать еще раз. Недействительные учетные данные могут иметь несколько значений. В любом случае вы не должны просто показывать сообщение об ошибке и тупик для пользователя. Предоставьте содержательное сообщение об ошибке с возможностью повторить попытку.