Есть два способа сделать это.
Реальный встроенный метод не полностью основан на PHP, так как его нельзя использовать без вызовов JavaScript и AJAX.
Обратите внимание на раздражающий недостаток этого метода:вам, наконец, придется заново проверять каждое поле после получения данных формы.
Еще одна перезагрузит вашу страницу, но это будет та же страница со всеми полями формы, введенными данными, а также сгенерированными сообщениями об ошибках.Это называется POST / Redirect / GET pattern
. Вот краткий пример
<?
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>