cap4369
Новичок
Здравствуйте! Помогите справиться с проблемой. Создаю форму обратной связи. В обработчике формы создаю случайные переменные $a и $b для проведения арифметических операций в капче. Проверяю их вывод на странице формы, они не выводятся. Хотя сам скрипт отправки сообщений работает. Таким образом еще до генерации капчи и вывода ее изображения уже возникла проблема, а в чем дело не могу понять.
Код формы:
Код обработчика:
Код формы:
Код:
<?php
include "config.php";
session_start();
?>
<div class="form_mail">
<form method="post" action="<?php echo $site_url; ?>classes/mail.php">
<table cellspacing="20">
<tr>
<td><span id="red_star">*</span> Имя:</td>
<td><span><input type="text" name="name" maxlength="20" size="25" value="<?=$_SESSION['name'];?>" /></span></td>
</tr>
<tr>
<td><span id="red_star">*</span> Ваш Email:</td>
<td><span><input type="text" name="mail" maxlength="20" size="25" value="<?=$_SESSION['mail'];?>" /></span></td>
</tr>
<tr>
<td>
<span id="red_star">*</span> Сообщение:</td>
<td><span><textarea cols="45" rows="5" name="text"><?=$_SESSION['text'];?></textarea></span></td>
</tr>
<tr>
<td><span id="red_star">*</span><label for="captcha"><?= "$a + $b" ?> = ? :<?= $_SESSION['res_captcha'] ?></label></td>
<td><span><input type="text" name="captcha" id="captcha" /></span></td>
</tr>
<tr>
<td colspan="2"><p class="form_mail_submit"><input type="submit" name="submit" value="Отправить сообщение"></p></td>
</tr>
</table>
</form>
<p class="message"><?=$_SESSION['res']?><p>
</div><!-- #mailform -->
<?php
session_unset();
session_destroy();
?>
Код:
<?php
include "config.php";
if($_POST['submit']){
session_start();
// определяем переменные
$name = substr($_POST['name'], 0, 20);
$mail = substr($_POST['mail'], 0, 20);
$text = substr($_POST['text'], 0, 2000);
$captcha = $_POST['captcha'];
// проверка заполнения обязательных полей
$error = '';
$pattern = "/^.+@[a-z0-9]+\.[a-z]{2,6}$/i";
if(empty($name)) $error = '<li>Не заполнено поле "Имя"</li>';
if(empty($mail)) $error .= '<li>Не заполнено поле "Email"</li>';
if(empty($text)) $error .= '<li>Не заполнено поле "Сообщение"</li>';
if(empty($captcha)) $error .= '<li>Не заполнено поле "Введите ответ"</li>';
if(!empty($mail) and !preg_match($pattern, $mail)) $error .= '<li>Поле "Ваш Email:" не соответствует установленному формату</li>';
if(empty($error)) {
// определяем переменные
$to = '[email protected]';
$subject = "\r\n".'Заполнена форма на сайте'. "\r\n";
$message = "\r\n"."Имя: " .$name. "\r\n";
$message .= "Обратный e-mail: " .$mail. "\r\n";
$message .= "Текст сообщения: " .$text. "\r\n";
$headers = "Content-type: text/plain; charset = \"utf-8\"";
// формируем сообщение
if(mail($to, $subject, $message, $headers)) {
$_SESSION['res'] = $name.', Ваше письмо успешно отправлено.';
header("Location: $site_url?option=contacts");
exit();
}
else {
$_SESSION['res'] = 'Произошла ошибка. Попробуйте еще раз.';
header("Location: $site_url?option=contacts");
exit();
}
}
else {
$_SESSION['res'] = "Не заполнены обязательные поля:<ul>" .$error. "</ul>";
$_SESSION['name'] = $name;
$_SESSION['mail'] = $mail;
$_SESSION['text'] = $text;
header("Location: $site_url?option=contacts");
exit();
}
}
else {
header("Location: $site_url?option=contacts");
exit();
}
$a = mt_rand(1, 10);
$b = mt_rand(1, 10);
$_SESSION['res_captcha'] = $a + $b;
?>