У меня есть контактная форма, которая отправляет мне электронное письмо, когда кто-то заполняет поля и нажимает «отправить».
Теперь мне нужно что-то вроде страницы с благодарностью, на этой странице мне нужно загрузить фрагмент кода, чтобы отслеживать его.
Это код, который у меня есть сейчас:
<form id = "contact-form" method = "POST" action = "contact.php" role = "form" class = "wpcf7">
А это кнопка:
<div class = "col-md-12">
<a href = "#" onclick = "ga('send', 'event', 'contact', 'button-verstuur')";>
<input type = "submit" class = "btn btn-success btn-send wpcf7-submit" value = "Verstuur">
</a>
</div>
Я хочу перенаправить страницу после того, как кто-то нажмет кнопку «отправить». Но только если заполнены все обязательные поля. На данный момент проверяется, заполнены ли обязательные поля. Таким образом, перенаправление на страницу с благодарностью должно работать только тогда, когда обязательные поля заполнены.
Надеюсь, кто-нибудь сможет мне помочь с этим.
Редактировать:
Это код PHP
// configure
$from = 'Contactform <[email protected]>';
$sendTo = '<[email protected]>';
$subject = 'New message';
$fields = array('name' => 'Naam', 'surname' => 'Achternaam', 'phone' => 'Telefoonnummer', 'email' => 'Email', 'message' => 'Bericht'); // array variable name => Text to appear in email
$okMessage = 'Your message is sent successfully!';
$errorMessage = 'Error, please try again later.';
// let's do the sending
if (isset($_POST['url']) && $_POST['url'] == '') try
{
$emailText = "Uw heeft een nieuw bericht\n=============================\n";
foreach ($_POST as $key => $value) {
if (isset($fields[$key])) {
$emailText .= "$fields[$key]: $value\n";
}
}
mail($sendTo, $subject, $emailText, "From: " . $from);
$responseArray = array('type' => 'success', 'message' => $okMessage);
}
catch (\Exception $e)
{
$responseArray = array('type' => 'danger', 'message' => $errorMessage);
}
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
$encoded = json_encode($responseArray);
header('Content-Type: application/json');
echo $encoded;
}
else {
echo $responseArray['message'];
}
HTML-форма:
<form id = "contact-form" method = "POST" action = "contact.php" role = "form" class = "wpcf7">
<div class = "messages"></div>
<div class = "controls">
<div class = "form-group">
<label for = "form_name"><span class = "required">*</span> Naam:</label>
<span class = "wpcf7-form-control-wrap your-name">
<input id = "form_name" type = "text" name = "name" class = "wpcf7-text" required = "required" data-error = "Uw naam is verplicht">
</span>
<div class = "help-block with-errors"></div>
</div>
<div class = "form-group">
<label for = "form_email"><span class = "required">*</span> E-mail:</label>
<span class = "wpcf7-form-control-wrap your-email">
<input id = "form_email" type = "email" name = "email" class = "wpcf7-text" required = "required" data-error = "Een geldig e-mailadres is verplicht">
</span>
<div class = "help-block with-errors"></div>
</div>
<div class = "form-group">
<label for = "form_phone"><span class = "required">*</span> Telefoonnummer:</label>
<span class = "wpcf7-form-control-wrap your-url">
<input id = "form_phone" type = "text" name = "phone" class = "wpcf7-text">
</span>
<div class = "help-block with-errors"></div>
</div>
<div class = "form-group">
<label for = "form_message"><span class = "required">*</span> Bericht:</label>
<span class = "wpcf7-form-control-wrap your-message">
<textarea id = "form_message" name = "message" class = "wpcf7-textarea" rows = "4" required = "required" data-error = "U moet een bericht invullen"></textarea>
</span>
<div class = "help-block with-errors"></div>
</div>
<div class = "form-group antispam">
<label for = "form_phonee"><span class = "required">*</span> Veld leeg laten:</label>
<span class = "wpcf7-form-control-wrap your-url">
<input id = "form_phonee" type = "text" name = "url" class = "wpcf7-text">
</span>
<div class = "help-block with-errors"></div>
</div>
<div class = "col-md-12"><a href = "#" onclick = "ga('send', 'event', 'contact', 'button-verstuur')";>
<input type = "submit" class = "btn btn-success btn-send wpcf7-submit" value = "Verstuur"></a>
</div>
</div>
</form>
Привет, @MagnusEriksson, я добавил код PHP выше. Я попытался вставить код тега в сообщение об успешном выполнении, но не знаю, как поместить в него javascript.
вы можете разместить html-форму?
@BRjava Да, добавил :)






Привет, лучший вариант - проверить, пуста ли каждая переменная. Если есть ошибки, загрузите html с ошибками, иначе продолжайте свой код Бывший:
$form_nameErr = $form_emailErr = $form_phoneErr = $form_messageErr = $form_phoneeErr = "";
if (isset($_POST['url']) && $_POST['url'] == '') try
{
$emailText = "Uw heeft een nieuw bericht\n=============================\n";
if (!empty($_POST['form_name'])){
$emailText .= $_POST['form_name']."\n";
}else{
$form_nameErr = "Form Name required";
}
if (!empty($_POST['form_email'])){
$emailText .= $_POST['form_email']."\n";
}else{
$form_emailErr = "Email Text required";
}
}
if (!empty($form_nameErr) && !empty($form_emailErr) && !empty($form_phoneErr) && !empty($form_messageErr) )){
mail($sendTo, $subject, $emailText, "From: " . $from);
//TO redirect
header("Location: http://www.yourwebsite.com/thankyou.php");
exit();
$responseArray = array('type' => 'success', 'message' => $okMessage);
}else{
//load you html with error variables
}
ваш html должен содержать
<div class = "form-group">
<label for = "form_name"><span class = "required">*</span> Naam:</label>
<span class = "wpcf7-form-control-wrap your-name">
<input id = "form_name" type = "text" name = "name" class = "wpcf7-text" required = "required" data-error = "Uw naam is verplicht">
</span>
<span class = "error">* <?php echo $nameErr;?></span>
<br><br>
</div>
определить стиль ошибки См .: https://www.w3schools.com/php/php_form_required.asp
Спасибо за ответ, но я думаю, что есть небольшое недопонимание. Форма уже работает и проверяет, пусто ли поле, единственное, что мне нужно, чтобы перенаправить страницу на другую страницу после успеха :)
Я обновил ответ, используйте перенаправление после отправки электронной почты
Если это правильный ответ, не могли бы вы принять ответ?
Что ты пробовал? Вы публикуете сообщения с помощью Ajax? Где находится PHP-код, который получает опубликованную форму? Пожалуйста, добавьте весь соответствующий код и информацию. Глядя на класс формы, я предполагаю, что вы используете Wordpress и Contact Form 7?