I have a login.php file where I submit a form. When the form has validation errors (eg username, password empty) I create with echo ''; a bootstrap well in order to display the errors. My question is when I refresh the page, I want to have the .well not displayed, as when the page first loads. Any idea on how this could be done?
Thanks in advance
<?php if(count($msg) > 0) {
echo '<div class="well">';
echo '<p style="color: red;">Validation Errors</p>';
} ?>
<?php foreach($msg as $value) {
echo '<ul>';
echo '<li>';
echo $value;
echo '</li></ul>';
} ?>
<?php echo '</div>'; ?>
You can use sessions to identify that a request is done by the same user, specially with the same parameters. When you display the error message you save a marker in the session that you have displayed the error message like this:
$_SESSION['errorDisplayed'] = true;
Use this variable to see if you have show the error message in a previous request like this:
if (!isset($_SESSION['errorDisplayed'])) {
// not shown the error message yet, so do it here (if there are errors)
$_SESSION['errorDisplayed'] = true;
}
Keep in mind that at some time you have to clear the marker with unset()
again so you see any error messages again.
You can keep a new variable such as $hasError
and whenever you have validation errors, you set this variable to true
. Then, in your output, you only print the .well
class when $hasError
is false like so:
<div class="<?=(!$hasError) ? '.well' : '';?>">YOUR MESSAGE HERE!</div>