Я пробую создать валидацию формы введенных данных на php. Как сделать так, чтобы если например пользователь ввел данные, но не всех полей и нажал кнопку "Отправить" часть уже введенных данных не потерялась? Как это делать именно на php?
Вот мой код
https://phpsandbox.io/n/zgywc
<!-- <pre> -->
<?php
$method=$_SERVER['REQUEST_METHOD'];
$error=null;
$showUserData=false;
$name=null;
$email=null;
$content=null;
if ($method==='POST'){
if(empty($_POST['name'])){
$error='Заполните имя';
}
elseif(empty($_POST['email'])){
$error='Заполните email';
}
elseif(empty($_POST['content'])){
$error='Заполните контент';
}
elseif(empty($_POST['agree']) || $_POST['agree']!=='on'){
$error='Дайте согласие на обработку данных';
}
// var_dump($_POST);
if($error===null){
$showUserData=true;
$name=$_POST['name'];
$email=$_POST['email'];
$content=$_POST['content'];
}
}
?>
<!-- </pre> -->
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap demo</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">
</head>
<body>
<div class="container">
<?php if($error!==null): ?>
<div class="alert alert-danger mt-5" role="alert">
<?= $error; ?>
</div>
<?php endif; ?>
<?php if(!$showUserData):?>
<div class="card mt-5">
<div class="card-header">
Форма обратной связи
</div>
<div class="card-body">
<form action="<?php $_SERVER['SCRIPT_NAME'] ?>" method='POST'>
<div class="mb-3">
<label for="name" class="form-label">Имя</label>
<input type="text" class="form-control" id="name" name="name">
</div>
<div class="mb-3">
<label for="email" class="form-label">Email</label>
<input type="email" class="form-control" id="email" name="email">
</div>
<div class="mb-3">
<label for="content" class="form-label">Текст обращения</label>
<textarea class="form-control" id="content" rows="3" name="content"></textarea>
</div>
<div class="mb-3 form-check">
<input type="checkbox" class="form-check-input" id="agree" name="agree">
<label class="form-check-label" for="agree">Согласен с обработкой данных</label>
</div>
<button type="submit" class="btn btn-primary">Отправить</button>
</form>
</div>
</div>
<?php else: ?>
<div class="card mt-5">
<div class="card-header">
Данные формы
</div>
<div class="card-body">
<div class="row mb-3">
<div class="col-2">Имя:</div>
<div class="col-10"><?= $name;?></div>
</div>
<div class="row mb-3">
<div class="col-2">Email:</div>
<div class="col-10"><?= $email;?></div>
</div>
<div class="row mb-3">
<div class="col-2">Текст обращения:</div>
<div class="col-10"><?= $content;?></div>
</div>
<a href="/" class="btn btn-primary">Обратно к форме</a>
</div>
</div>
</div>
<?php endif;?>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3"
crossorigin="anonymous"></script>
</body>
</html>