Доброе время суток.
Небольшой сдвиг в переадресации появился, т.е в коде добавляю строчку:
window.location.href = "http://usefulscript.ru";
function(data){
document.getElementById('message').innerHTML = data;
$('#message').slideDown('slow');
$('#contactform img.loader').fadeOut('slow',function(){$(this).remove()});
$('#submit').removeAttr('disabled');
if(data.match('success') != null) $('#contactform').slideUp('slow');
if (data.match('success')) { // Form field cleanup after succesful message sending
$('#name').val('');
$('#email').val('');
$('#phone').val('');
$('#subject').val('');
$('#comments').val('');
$('#verify').val('');
$('#summa').val('');
window.location.href = "http://usefulscript.ru";
}
if (data.match('message')) {
$('#verify').val('');
}
}
но при таком коде, переадресация есть, но даже не успевает показаться сообщение об успешной отправке, как полагаю нужно указать время на которое появится сообщение и далее произойдет переадресация.
Сам пока не могу реализовать данный момент, может быть вы знаете ?
Заранее благодарен.
Все разобрался, переадресация работает, нужно было изменить строчку:
Цитата:setTimeout('location.replace("http://usefulscript.ru")', 10000);
Или можно еще как-то сделать, но при таком подходе все работает !
Доброе время суток,
С предыдущей темой у меня есть вопросы, но решать я буду сам, дабы не отвлекать вас по пустякам, но мне нужна ваша помощь в плане решения другого вопроса.
Решил не создавать отдельную тему, так как вопрос имеется всего один и задача такая же, как и в 1 теме, т.е имеется контактная форма для отправки сообщения и хотел бы защитить дополнительно данные сложением чисел, где данная форма будет использоваться на сайте, а предыдущая форма для заглушки.
Форма рабочая, хотел только добавить поле для проверочного кода.
1. Имеется код html:
<?php $a = rand(10,50); $b = rand(1,10); ?>
<form method="post" action="php/mail/
message.php">
<fieldset>
<div class="left">
<label for="name" title="Введите ваше имя">Имя:</label>
<input name="name" id="name" type="text" class="input_field" maxlength="20" title="Введите ваше имя" placeholder="Введите ваше имя" tabindex="1" />
<div class="clean"></div>
<label for="email" title="Введите ваш e-mail">Email:</label>
<input name="email" id="email" type="text" class="input_field" maxlength="40" title="Введите ваш e-mail" placeholder="Введите ваш e-mail" tabindex="2" />
<input name="submit" type="submit" class="submit_btn" value="Отправить сообщение" alt="Отправить сообщение" />
<div class="clean"></div>
</div>
<div class="border-right"></div>
<div class="right">
<label for="text" title="Написать сообщение">Сообщение:</label>
<textarea name="text" id="text" cols="40" rows="10" title="Написать сообщение" placeholder="Написать сообщение" tabindex="3"></textarea>
<?php echo "$a + $b = "; ?>
<input type="text" name="verify" id="verify" />
<input type="hidden" name="summa" id="summa" value="<?php echo md5($a + $b); ?>" />
<div class="clean"></div>
</div>
</fieldset>
</form>
На скрине, как выглядит форма, так же хотел бы получить вашего совета, куда и как лучше поместить поле для проверочного кода, что-то в голову ничего не идет...
2. Код обработчика message.php
//message.php
<?php include "
config.php";
Код:
// Если нажата кнопка "Отправить сообщение"
if (isset ($_POST['submit']))
{
// если хотя бы одно из полей не заполнено
if ((empty($sender)) OR (empty($email)) OR (empty($text)))
{
// сообщение если не все поля заполнены
echo $warning;
}
// если все поля заполнены
else
{
// если email не подходит по формату
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
{
// выводим предупреждающее сообщение
echo $email_warning;
// скрипт прекращает работу
exit();
}
// если сообщение успешно отправлено
if (mail($mymail, $topic, $message, $headers))
{
// перенаправление на страницу
echo $url_success_send;
// вывод сообщения об успешной отправке
echo $success;
}
// если произошла ошибка при отправке
else
{
// вывод сообщения об ошибке
echo $fail;
}
}
}
?>
3. Код config.php
//config.php
Код:
<!DOCTYPE HTML>
<html>
<head>
<meta charset = "utf-8" />
<title>Проверка контактной формы</title>
</head>
<?php
// email получателя
$mymail = '';
// тема письма
$topic = '';
// переменные
$sender = $_POST['name'];
$email = $_POST['email'];
$text = $_POST['text'];
// очистка от спецсимволов и тегов
$sender = strip_tags(htmlspecialchars($sender));
$email = strip_tags(htmlspecialchars($email));
$text = strip_tags(htmlspecialchars($text));
// сообщение
$message = "<table>
<tr>
<td>Вам написал:</td>
<td>$sender</td>
</tr>
<tr>
<td>e-mail:</td>
<td>$email</td>
</tr>
<tr>
<td style = 'vertical-align: top'>Сообщение:</td>
<td>$text</td>
</tr>
</table>";
// Дополнительные заголовки
$headers = 'From: site.ru <>' . "\r\n" . 'Content-type: text/html; charset = utf-8';
// переадресация после отправки письма
$url_success_send = "<meta http-equiv='Refresh' content='; url=http://'>";
// Сообщение о том, что должны быть заполнены все поля
$warning = '<div class = "warning"><h2 class = "warning_text">Для отправки сообщения нужно заполнить все поля !</h2>
<p class = "back"><a href = "javascript:history.back();">Вернуться назад</a></p></div>';
// Сообщение, неправильный E-mail
$email_warning = '<div class = "warning"><h2 class = "warning_text">Проверьте правильность ввода <br />Email-адреса !</h2>
<p class = "back"><a href = "javascript:history.back();">Вернуться назад</a></p></div>';
// Сообщение об успешной отправке письма
$success = '<div class = "warning"><h2 class = "success_text">Письмо успешно отправлено !</h2>
<p class = "back">Ожидайте в течение 24 часов.</p></div>';
// Сообщение об ошибке при отправке письма
$fail = '<div class = "warning">
<h2 class = "fail_text">Сообщение не было отправлено !</h2></div>';
?>
</html>
Если например неправильно введен email адрес, то будет выдавать на странице
Цитата:http://site.ru/php/mail/message.php
сообщение, как на скрине ниже:
Идея проста, хотел бы добавить в скрипт, что появлялось окно, где было бы в случае неправильного ввода суммы цифр, сообщение, например:
Цитата:Вы ввели неправильный проверочный код !
и ссылка для перехода назад ("Вернуться назад)", как на скрине с неправильным вводом email адреса.
В обработчик пробовал добавлять код:
Код:
if(!isset($verify) || trim($verify) == '') {
echo '<div class="error_message">Введите проверочный код !</div>';
exit();
} else if(md5(trim($verify)) != $_POST['summa']) {
echo '<div class="error_message">Вы ввели неправильный проверочный код !</div>';
exit();
}
но не работает, так как думаю не совсем правильно делаю, вот и нужна ваша помощь.
Заранее благодарен.