Мой сайт - это один пейджер с навигацией, который ссылается на разные части страницы в том же документе. Поэтому мой контакт находится на сайте stie.com/#contact, а не на сайте site.com/contact.html.
У меня есть контактная форма, закодированная в html, используя метод post, связанный с mail.php. При нажатии кнопки "Отправить" я перенаправляется на сайт site.com/mail.php, где отображается сообщение "Ваше сообщение успешно отправлено". Как получить его так, чтобы он отображался прямо поверх контактной формы, так как у меня нет файла contact.html, чтобы он превратился в contact.php и поместил php-код вправо, где я хочу, чтобы сообщение об успешном запуске отображалось?
<div class="row">
<div class="12u">
<form method="post" action="mail.php">
<div>
<div class="row half">
<div class="6u">
<input type="text" name="name" id="name" placeholder="Name" />
</div>
<div class="6u">
<input type="email" name="email" id="email" placeholder="Email" />
</div>
</div>
<div class="row half">
<div class="12u">
<input type="text" name="subject" id="subject" placeholder="Subject" />
</div>
</div>
<div class="row half">
<div class="12u">
<textarea name="message" id="message" placeholder="Message"></textarea>
</div>
</div>
<div class="row">
<div class="12u">
<a href="#" class="button form-button-submit">Send Message</a>
<a href="#" class="button button-alt form-button-reset">Clear Form</a>
</div>
</div>
</div>
</form>
</div>
Мой Mail.php
<?php
//GET INFO FROM CONTACT FORM
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST ['subject'];
$message = $_POST['message'];
$from .= $_POST ['email'];
$to = '[email protected]';
// compose headers
$headers = "From: $email\r\n";
$headers .= "Reply-To: $email\r\n";
//POST SUBMIT
if ($_POST['sumbit']);
if ($name != '' && $subject != '' && $message !='' && $email != '') {
if (mail ($to, $subject, $from, $message, $headers)) {
echo '<p>Your message has been sent!</p>';
} else {
echo '<p>Something went wrong, go back and try again!</p>';
}
} else {
echo '<p>Please fill in all required fields!!</p>';
}
?>
Сделайте поле действия пустым. Поместите action=""
вместо action="mail.php"
Затем добавьте свой контент mail.php на свою страницу контактов. Как вы знаете, вам также нужно сохранить эту страницу как PHP; например, mycontactform.php. Таким образом, у вас больше контроля над содержимым и форматом сообщения "отправлено ваше сообщение". Если вы отделите mail.php, вы не сможете обращаться к разделам в mycontactform.php.
Безопасность и уязвимость кодов PHP, которые вы используете, должны быть рассмотрены после того, как вы завершили кодирование страницы и протестировали ее как в рабочем состоянии, так и в нужном формате, поскольку для этого требуется более углубленное изучение соглашений и обычаев PHP. source: набор пошаговых руководств с использованием HTML5, CSS3 и PHP (8)
Вы можете использовать параметры URL с PHP:
<?php
$confDisplay = 'display:none;';
// if the url param exists, display confirmation
if(isset($_GET["confirm"]) && $_GET["confirm"]==true){
$confDisplay = 'display:inline;';
}
?>
...
<div style="<?php echo $confDisplay; ?>">
Your form has been submitted!
</div>
...
Просто установите URL-адрес вашей формы на ту же страницу с ?confirm=true
в конце.
$_GET["confirm"]
спрашивает, есть ли в вашем URL подтверждение. Это неверно, если URL вашей страницы не дополнен следующим параметром: «mysite.php? Verify = true». Перейдите на страницу без параметра подтверждения, чтобы скрыть подтверждение. Он будет отображаться только в том случае, если он у вас есть в URL-адресе, поэтому ваша форма отправляется, и только URL-адрес действия отправки формы включает его. Все остальное просто указывает на страницу в обычном режиме.
Обратите внимание, что ваш скрипт mail.php уязвим для атаки на заголовки. Вам нужно избежать переменной $ _POST ['email']. Вы должны удалить специальные символы \n и \ r. Это можно сделать легко, используя функцию str_replace.