У меня есть форма запроса на странице, созданной с использованием Material Design Lite Library, форма находится в последнем разделе страницы. Код формы HTML ниже:
<div class="mdl-cell mdl-cell--6-col">
<h1 class = "enquiry--header"> Enquiry </h1>
<form method="post" action = "index.php">
<div class = "mdl-textfield mdl-js-textfield">
<input type = "text" id="name" name = "name" class = "mdl-textfield__input name" value="<?php echo htmlspecialchars($_POST['name']); ?>">
<label class="mdl-textfield__label" for="name">Name</label>
</div>
<?php echo "<p class = 'message'>$errName</p>";?>
<div class = "mdl-textfield mdl-js-textfield">
<input type = "text" id="email" name = "email" class = "mdl-textfield__input email" value="<?php echo htmlspecialchars($_POST['email']); ?>">
<label class="mdl-textfield__label" name = "email" for="email">Email</label>
</div>
<?php echo "<p class = 'message'>$errEmail</p>";?>
<div class = "mdl-textfield mdl-js-textfield">
<textarea type = "text" id="enquiry" name = "enquiry" class = "mdl-textfield__input enquiry" value="<?php echo htmlspecialchars($_POST['enquiry']); ?>" name = "enquiry"></textarea>
<label class="mdl-textfield__label" for="email">Your Enquiry</label>
</div>
<?php echo "<p class = 'message'>$errMessage</p>";?>
</form>
<div id = "submit" name = "submit" type = "submit" class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored mdl-color--grey-900 mdl-js-ripple-effect">
Send
</div>
<?php echo $result;?>
</div>
Код PHP:
$name = null;
$email = null;
$message = null;
$from = null;
$to = null;
$subject = null;
$errName = null;
$errEmail = null;
$errMessage = null;
$errResult = null;
if (isset($_POST["submit"])) {
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'Contact-Us';
$to = '[email protected]';
$subject = 'Enquiry';
$body = "From: $name\n E-Mail: $email\n Message:\n $message";
// Check if name has been entered
if (!$_POST['name']) {
$errName = 'Please enter your name';
}
// Check if email has been entered and is valid
if (!$_POST['email'] || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$errEmail = 'Please enter a valid email address';
}
//Check if message has been entered
if (!$_POST['message']) {
$errMessage = 'Please enter your message';
}if (!$errName && !$errEmail && !$errMessage) {
if (mail ($to, $subject, $body, $from)) {
$result='<div class="success">Thank You! We will reply shortly</div>';
$_POST = array();
} else {
$result='<div class="error">Your message could not be sent.</div>';
}
}
}
?>
Результат div не обновляется, и сообщения об ошибках не отображаются при отправке формы, поскольку поля остаются пустыми. Я использую MAMP, чтобы проверить это локально.
Попробуйте добавить error_reporting(E_ALL)
Прямо под вашим <?php
открывающий тег, чтобы убедиться, что в отчете об ошибках отображаются все.
Других решений пока нет …