Я проверяю свою контактную форму HTML, используя PHP. Я проверяю форму, отправляя форму без данных. Затем я проверяю форму, предоставляя частичные данные. когда я отправляю частичные данные, правильные поля останутся в форме, а другие будут выдавать ошибочные сообщения. тогда я правильно заполню форму, чтобы предотвратить любые ошибки, но при отправке формы данные все еще присутствуют в форме, а не очищаются ... так как я могу это исправить?
Я пытался использовать это, но оно не работает:
function show_data() {
if (!empty($_POST['firstName'] && isset($_POST['submit']))) {
if ($lastNameErr || $emailErr || $phoneErr) {
echo $_POST['firstName'];
} else {
echo '';
}
}
}
<input type="text" name="firstName" placeholder="First name" value="<?php show_data(); ?>">
моя форма:
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
<label for="firstName">
First Name <span class="error"><?php echo $firstNameErr; ?></span>
<input type="text" name="firstName" placeholder="First name" value="<?php show_data(); ?>">
</label>
<label for="lastName">
Last Name <span class="error"><?php echo $lastNameErr; ?></span>
<input type="text" name="lastName" placeholder="Last name">
</label>
<label for="email">
E-mail <span class="error"><?php echo $emailErr; ?></span>
<input type="email" name="email" placeholder="E-mail Address">
</label>
<label for="phone">
Phone <span class="error"><?php echo $phoneErr; ?></span>
<input type="phone" name="phone" placeholder="Phone Number">
</label>
<label for="message">
Message
<textarea name="msg" placeholder="Write your message here..."></textarea>
</label>
<input type="submit" name="submit" value="SUBMIT">
<div class="success">
<?php
if (isset($_POST['submit'])) {
if (isset($firstName) && isset($lastName)) {
echo '<p>Thank you '.$firstName.' '.$lastName.' for submiting the form';
} else {
echo '';
}
}
?>
</div>
</form>
мой код php:
function clean_data($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
if ($_SERVER["REQUEST_METHOD"] == 'POST') {
if (empty($_POST['firstName'])) {
$firstNameErr = '*First name required';
} else {
$firstName = clean_data($_POST['firstName']);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$firstName)) {
$firstNameErr = "Only letters and white space allowed";
}
}
function show_data() {
if (!empty($_POST['firstName'] && isset($_POST['submit']))) {
if ($lastNameErr || $emailErr || $phoneErr) {
echo $_POST['firstName'];
} else {
echo '';
}
}
}
if (empty($_POST['lastName'])) {
$lastNameErr = '*Last name required';
} else {
$lastName = clean_data($_POST['lastName']);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$lastName)) {
$lastNameErr = "Only letters and white space allowed";
}
}
if (empty($_POST['email'])) {
$emailErr = '*Email required';
} else {
$email = clean_data($_POST['email']);
// check if e-mail address is well formatted
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = 'Not a valid e-mail format';
}
}
if (empty($_POST['phone'])) {
$phoneErr = '*Phone required';
} else {
$phone = clean_data($_POST['phone']);
// check if the phone number is well formated
if (!preg_match("/^(\+1|001)?\(?([0-9]{3})\)?([ .-]?)([0-9]{3})([ .-]?)([0-9]{4})/",$phone)) {
$phoneErr = 'Not a valid phone format';
}
}
if (empty($_POST['msg'])) {
$message = '';
} else {
$message = clean_data($_POST['msg']);
}
}
?>
Iхотите, чтобы форма очищалась при отправке формы, но поле ввода останется даже после правильной отправки формы.