Я работаю над сайтом «Скоро», где, когда пользователь выбирает «Свяжитесь с нами», модальный код JavaScript появляется в форме электронной почты. Я использовал тот же код, который у меня был на странице без модального, и он работает там, поэтому я не уверен, почему на этот раз письмо не отправляется. Это что-то делать с отправкой из модального?PHP не отправляет форму из модального
Способ, которым я сделал модальный, заключается в том, что он находится в нижней части страницы, visibility: hidden; opacity: 0;
, пока пользователь не нажмет на «Свяжитесь с нами», где модаль получит класс, прикрепленный с помощью visibility: visible; opacity: 1;
. Я полагаю, что есть, может быть, лучшие способы сделать это, но я учусь, и это то, что я могу сделать в данный момент.
HTML:
<form class="form" role="form" method="post" action="#contact">
<div class="form__text">
<p>Our <strong>new</strong> website will launch in <strong>Spring 2017</strong>.</p>
<p>In the meantime, contact us for more information.</p>
</div>
<div class="form__inputs">
<div class="form__name">
<label for="name" class="name">Name</label><br>
<input type="text" class="form-control" id="name" name="name" value="" required="">
</div>
<div class="form__email">
<label for="email" class="email">Email</label><br>
<input type="email" class="form-control" id="email" name="email" value="" required="">
</div>
<div class="form__message">
<label for="message" class="message">Message</label><br>
<textarea class="form-control" rows="4" name="message" required=""></textarea>
</div>
<div class="form__submit">
<button id="submit" name="submit" type="submit">Submit</button>
</div>
</div>
</form>
Это PHP:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: xxx';
$to = '[email protected]';
$subject = 'Hello';
$body = "From: $name\n E-Mail: $email\n Message:\n $message";
if ($_POST['submit']) {
if (mail ($to, $subject, $body, $from)) {
echo '<h4 >Thank you for your message!</h4>';
} else {
echo '<h4>Sorry there was an error sending your message. Please try again!</h4>';
}
}
?>
РНР в том же документе (index.php), как HTML, в нижней части (как раз перед JS скрипт) и тег. Ошибки я получаю:
не можете/
Не могли бы вы посоветовать, почему он не отправляется? Я плохо знаю PHP, я пытаюсь понять, что происходит, но не очень успешно.
В теге FORM удалите элемент 'action =" # contact "и повторите попытку? – Cagy79
Кроме того, вы проверяете 'if ($ _POST ['submit'])', но ваш submit не имеет атрибута 'value', поэтому' $ _POST ['submit'] 'будет пустой строкой даже при отправке формы. Лучше проверить 'if (! Empty ($ _ POST))' –
использовать Php echo $ _SERVER ['PHP_SELF']; ?> вместо «#contact» в действии формы – Gopalakrishnan