Печать встроенной строки PHP вместо стирания всей страницы

Как заставить PHP печатать ошибку в строке вместо изменения всей страницы?

Я бы хотел, чтобы он #errors на #errors и заполнял это, а не менял все.

Используемый мной код die ("Incorrect username or password.");

Я очень новичок в PHP, поэтому извините, если это довольно простая задача.

Solutions Collecting From Web of "Печать встроенной строки PHP вместо стирания всей страницы"

Поместите ошибку в переменную, где вы делаете свою логику и печатаете ее содержимое в #errors. Например:

 if (username_is_incorrect()) $error = 'Incorrect username or password.'; 

И в HTML

 <?php if (isset($error)):?><div id="errors"><?=$error?></div><?php endif;?> 

Есть два способа сделать это.

Реальный встроенный метод не полностью основан на PHP, поскольку он не может использоваться без вызовов JavaScript и AJAX.
Обратите внимание на раздражающий недостаток этого метода: вам нужно будет снова проверить каждое поле после получения данных формы.

Другой будет перезагружать вашу страницу, но она будет одной и той же страницей со всеми полями формы, введенными данными и свежими сообщениями об ошибках. Это называется шаблоном POST / Redirect / GET

вот краткий пример

 <? if ($_SERVER['REQUEST_METHOD']=='POST') { $err = array(); //performing all validations and raising corresponding errors if (empty($_POST['name']) $err[] = "Username field is required"; if (empty($_POST['text']) $err[] = "Comments field is required"; if (!$err) { // if no errors - saving data // and then redirect: header("Location: ".$_SERVER['PHP_SELF']); exit; } else { // all field values should be escaped according to HTML standard foreach ($_POST as $key => $val) { $form[$key] = htmlspecialchars($val); } } else { $form['name'] = $form['comments'] = ''; } include 'form.tpl.php'; ?> 

в файле form.tpl.php у вас есть поля формы, введенные значения и условный вывод сообщений об ошибках

 <? if ($err): ?> <? foreach($err as $e): ?> <div class="err"><?=$e?></div> <? endforeach ?> <? endif ?> <form> <input type="text" name="name" value="<?=$form['name']?>"> <textarea name="comments"><?=$form['comments']?></textarea> <input type="submit"> </form>