Необходимо передать массив в другие массивы ошибок php, чтобы два php-файла работали вместе, чтобы форма могла работать.
ОБНОВЛЕНИЕ
Новичок в PHP!Попытка сделать почту PHP с HTML-формой, но каким-то образом, когда я отправляю пустую форму, она не перехватывает мои ошибки операторов if, а просто переходит к прямой странице contactform.php - пустой странице, а не главной странице индекса с ошибками.
index.php и contactform.php оба являются отдельным файлом.
<?php
//setting error empty string
$errors = ['empty' , 'name', 'subject', 'mail', 'message'];
if (isset($_POST['submit'])) {
$name = $_POST['name'];
$subject = $_POST['subject'];
$mailFrom = $_POST['mail'];
$message = $_POST['message'];
if(empty($name) or empty($subject) or empty($mailFrom) or empty($message))
{
$errors['empty']="Please fill the empty form";
}
if( !preg_match ("/^[a-zA-Z\s]+$/",$name)) {
$errors['name'] = "Name must only contain letters!";
}
if( !preg_match ("/^[a-zA-Z\s]+$/",$subject)) {
$errors['subject'] = "Subject must only contain letters!";
}
if(!filter_var($mailFrom, FILTER_VALIDATE_EMAIL)) {
$errors['mail'] = "Invalid email format";
}
if( !preg_match ("/[A-Za-z0-9]+/",$message)){
$errors['message'] = "Your message must not contain special characters";
}
$mailTo = "my@email.com";
$headers = "From: ". $mailFrom;
$txt = "You have received an e-mail from" .".\n\n".$name.".\n\n".$message;
if(!isset($errors) || count($errors) == 0) {
mail($mailTo, $subject, $txt, $headers);
header("Location: index.php");
}
}
?>
ФАЙЛ HTML
<form class="box" action="contactform.php" method="post">
<div class="container-text">
<p>
<label>Name</label>
<input type="text" name="name" placeholder="Full Name">
<span class="error">* <?php echo isset($errors['name']) ?
$errors['name'] : "";?></span>
</p>
<p>
<label>Subject</label>
<input type="text" name="subject" placeholder="Subject">
<span class="error">* <?php echo isset ($errors['subject']) ?
$errors['subject'] : "";?></span>
</p>
<p>
<label>Email</label>
<input type="text" name="mail" placeholder="Your e-mail">
<span class="error">* <?php echo isset ($errors['mail']) ?
$errors['mail'] : "";?></span>
</p>
<p>
<label>Message</label>
<textarea name="message" row="5" placeholder="Message">
</textarea>
<span class="error">* <?php echo isset ($errors['message']) ?
$errors['message'] : "";s?></span>
</p>
</div>
<div class="full-container">
<p>
<button type="submit" name="submit" value="submit"
>Submit</button>
</p>
</div>
</div>
</form>