У меня есть контактная форма на сайте, который я разрабатываю, и написал какой-то PHP, который вернет ошибки на страницу, если определенные поля не заполнены правильно, все работает нормально, письмо отправляется, если оно заполняется правильно, и если это неправильные сообщения об ошибках отправляются и отображаются.Дилемма заголовка и эха
Единственная проблема заключается в том, что если форма заполняется неправильно, пользователь перенаправляется на страницу с сообщением об ошибке, но форма ниже страницы, на которой пользователь перенаправляется. Я хотел бы, если ошибка для пользователя будет перенаправлена на ту же страницу с сообщением об ошибке, но ниже на странице, где находится форма.
Я провел некоторое исследование и увидел, что могу использовать id-привязки и заголовок, но если я это сделаю, страница загружается там, где я говорю, но сообщение об ошибке не отображается. Я попытался использовать цикл if с переменной _GET, чтобы проверить, соответствует ли это что-то в сообщении об ошибке, но, похоже, не работает нормально.
Итак, подведет итог:
Я хотел бы, если форма заполнена неправильно, для пользователя, чтобы быть возвращена на ту же страницу, но пониже, где форма и для переменного сообщения об ошибке, установленных в код, который будет отображаться над формой.
Я только начал изучать PHP, поэтому я был бы признателен за помощь в разрешении этого. Заранее благодарим за помощь и предложения.
Вот некоторые скриншоты сайта:
http://imgur.com/a/Hv5OW
Вот код этой страницы:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = trim($_POST["name"]);
$email = trim($_POST["email"]);
$message = trim($_POST["message"]);
if ($name == "" OR $email == "" OR $message == "") {
$error_message = "You must enter a name, email address and message";
}
if (!isset($error_message)) {
foreach ($_POST as $value) {
if (stripos($value, 'Content-Type:') !== false) {
$error_message = "There was a problem with the information you submitted";
}
}
}
if (!isset($error_message) && $_POST["address"] != "") {
$error_message = "Your contact form submission has an error";
}
require_once("inc/phpmailer/class.phpmailer.php");
$mail = new PHPMailer();
if (!isset($error_message) && !$mail->ValidateAddress($email)) {
$error_message = "You must specify a valid email address";
}
if (!isset($error_message)) {
$email_body = "";
$email_body = $email_body . "Name: " . $name . "<br>";
$email_body = $email_body . "Email: " . $email . "<br>";
$email_body = $email_body . "Message: " . $message;
$mail->SetFrom($email, $name);
$address = "[email protected]";
$mail->AddAddress($address, "Corwen Forestry Timber Products Ltd.");
$mail->Subject = "Website Contact Form Submission | " . $name;
$mail->MsgHTML($email_body);
if ($mail->Send()) {
header("Location: contact.html?status=thanks");
exit;
}
else {
$error_message = "There was a problem sending the email: " . $mail->ErrorInfo;
}
}
}
;
?>
<?php
$title = "Corwen Forestry Online | Contact Us";
$active = "contact";
include("inc/header.php");
?>
<img class="banner" src="images/contact-us.jpg" alt="Contact us background image.">
<article class="band content-wrap clearfix">
<?php if (isset($_GET["status"]) && $_GET["status"] == "thanks") { ?>
<section>
<p class="contact-thanks">Thanks for getting in touch, we'll get back to you as soon as we can.</p>
</section>
<?php }
else { ?>
<header>
<h2>Contact Us</h2>
</header>
<section class="contact-intro">
<p>
Lorizzle hizzle dolor fizzle amizzle, consectetuer adipiscing elizzle. Crackalackin sapien velizzle,
my shizz volutpizzle, suscipit quis, its fo rizzle vel, arcu. Pellentesque fizzle tortizzle. Izzle
mammasay mammasa mamma oo sa. Fusce izzle dolor dapibus turpis tempizzle tellivizzle. Crunk
pellentesque nibh izzle turpizzle. Fo shizzle my nizzle funky fresh crackalackin. Pellentesque
eleifend rhoncizzle nisi. In for sure habitasse platea dictumst. Donec dapibizzle. Curabitur gangsta
urna, pretizzle eu, pizzle ac, my shizz vitae, nunc. Da bomb suscipizzle. Integer break it down
pimpin' shiznit fo shizzle my nizzle.
</p>
</section>
<section id="error-anchor" class="contact-third first">
<img src="images/contact-icon-email.png" alt="email icon">
<h3><a href="mailto:[email protected]">[email protected]</a></h3>
</section>
<section class="contact-third">
<img src="images/contact-icon-address.png" alt="address icon">
<h3>
Ty’n Llidiart Industrial Estate<br>
Corwen<br>
Denbighshire<br>
LL21 9RZ
</h3>
</section>
<section class="contact-third">
<img src="images/contact-icon-phone.png" alt="phone icon">
<h3>01490 412 146</h3>
</section>
<?php
if (isset($error_message)) {
header("Location: contact.html#error-anchor");
echo '<p class="error-message">' . $error_message . '</p>';
}
;
?>
<form class="clearfix" method="post" action="contact.html">
<table class="contact-us">
<tr>
<th>
<label for="name">Name</label>
</th>
<td>
<input type="text" name="name" id="name">
</td>
</tr>
<tr>
<th>
<label for="email">Email</label>
</th>
<td>
<input type="text" name="email" id="email">
</td>
</tr>
<tr>
<th>
<label for="message">Message</label>
</th>
<td>
<textarea name="message" id="message"></textarea>
</td>
</tr>
<tr style="display: none;">
<th>
<label for="address">Address</label>
</th>
<td>
<p>Please leave the address field blank, it's an anti-spam measure.</p>
<input type="text" name="address" id="address">
</td>
</tr>
</table>
<input type="submit" value="Send Message">
</form>
<section class="map">
<iframe width="47.7%" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0"
src="https://maps.google.co.uk/maps/ms?msa=0&msid=208085933608816427574.0004e1242973ccf3517ee&ie=UTF8&t=m&ll=52.977589,-3.414001&spn=0.144707,0.291824&z=11&output=embed"></iframe>
<br/>
<small>View <a target="_blank"
href="https://maps.google.co.uk/maps/ms?msa=0&msid=208085933608816427574.0004e1242973ccf3517ee&ie=UTF8&t=m&ll=52.977589,-3.414001&spn=0.144707,0.291824&z=11&source=embed"
style="color:#0000FF;text-align:left">CFTP HQ and Mills</a> in a larger map
</small>
</section>
<section class="map-key">
<ul>
<li>
<img src="images/a-sml.png" alt="Head Office map icon key.">
Head Office & Shop
</li>
<li>
<img src="images/b-sml.png" alt="Gwyddelwern Sawmill map icon key.">
Gwyddelwern Sawmill
</li>
<li>
<img src="images/c-sml.png" alt="Llandrillo Sawmill map icon key.">
Llandrillo Sawmill
</li>
</ul>
</section>
<?php } ?>
</article><!-- end band content-wrap -->
<?php include("inc/footer.php"); ?>
Вы говорите, что перенаправляетесь к определенному якорю, если форма неверна. Но это не показано из вашего кода выше. Не могли бы вы обновить свой код? –
@claarman Я добавил строку заголовка («Location: contact.html # error-anchor»); где у меня было это, когда я пытался заставить его работать. – number8pie
проверить мой ответ, который должен работать (с небольшим количеством настроек) –