Я смотрел на другие подобные темы, и ответы на них не будут работать для меня.За меня тоже проголосовали, и вопрос сняли за то, что он был слишком расплывчатым, надеюсь, в этот раз этого не произойдет, потому что я пытаюсь быть конкретным.Если что-то не так с моим вопросом, пожалуйста, скажите мне, вместо того, чтобы просто понизить голосование.
Я пытаюсь создать контактную форму с внутренней проверкой php.Я обновлю HTML-форму, чтобы включить проверку на стороне пользователя, когда у меня будет работать проверка на стороне пользователя, поскольку я в конечном итоге хочу и то, и другое.
Форма контакта сама работает с функцией mail (), однако проверка по какой-то причине не работает.Я хочу, чтобы, если поле оставлено пустым, было опубликовано уведомление «Все поля обязательны для заполнения», а если в поле электронной почты нет знака (@), на нем будет отображаться «В сообщении электронной почты должен быть знак (@)».
Для этого у меня есть входные данные формы HTML с указанными именами, а затем в PHP у меня есть проверка, которая включает в себя заголовок («Location: email-form2.php»);перенаправить обратно на ту же страницу, если поля формы не верны.Однако, независимо от того, что я пробую, перенаправление с ошибкой не происходит, и оно просто перенаправляет на страницу действия «email-action.php», отправляет электронное письмо и затем завершается.
Что я делаю неправильночто проверка не работает?
Вот код 'email-form2.php':
<?php
session_start();
if ( isset($_POST['name']) && isset($_POST['email']) && isset($_POST['subject']) && isset($_POST['message']) ) {
if ( strlen($_POST['name']) < 1 || strlen($_POST['email']) < 1 || strlen($_POST['subject']) < 1 || strlen($_POST['message']) < 1) {
$_SESSION['error'] = "All fields are required";
header("Location: email-form2.php");
return;
}
elseif (strpos($_POST['email'], '@' ) == false) {
$_SESSION['error'] = "Email must have an at-sign (@)";
header("Location: email-form2.php");
return;
}
else {
return false;
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf8">
<title>Email Tester</title>
</head>
<body>
<?php
if ( isset($_SESSION['error']) ) {
echo('<p style="color: red;">'.$_SESSION['error']."</p>\n");
unset($_SESSION['error']);
}
?>
<form action="email-action.php" method="POST">
<label for="name">Enter your name: </label><br>
<input type="text" id="name" name="name"><br>
<label for="email">Enter your email: </label><br>
<input type="text" id="email" name="email"><br>
<label for="subject">Subject:</label><br>
<input type="text" id="subject" name="subject"><br>
<label for="message">Enter your message:</label><br>
<input type="text" id="message" name="message"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
Файл 'email-action.php' находится в той же папке,вот код:
<?php
$to = "example@example.com";
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$headers = "From: $name <$email>";
mail($to, $subject, $message, $headers);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf8">
<title>Email Tester</title>
</head>
<body>
<h1>Email Sent!</h1>
<?php
if ( isset($_SESSION['error']) ) {
echo('<p style="color: red;">'.$_SESSION['error']."</p>\n");
unset($_SESSION['error']);
}
?>
</body>
</html>