делаю форму обратной связи. Без "защиты от роботов" всё работает. Пытаюсь добавить защиту. Правильность ввода кода с картинки проверяет, а вот само сообщение отправить не получается - пишет что не введено имя (и т.д.)
Вот код:
<div id="Layer9">
<p align="center" class="style8">Если у вас возникли какие-либо вопросы - заполните данную форму и наш менеджер свяжется с вами в ближайшее время</p>
<?php
function show_form()
{
?>
<form action="" method=post>
<div align="center" class="style8">
<br />
<span class="style13">Фамилия Имя Отчество <span class="style14">*</span> </span><br />
<input type="text" name="FIO" size="50"/>
<br />
<span class="style13">e-mail </span><br />
<input type="text" name="Mail" size="50" />
<br />
<span class="style13">Контактный телефон <span class="style14">*</span></span><br />
<input type="text" name="Phone" size="50" />
<br />
<span class="style13">Текст письма </span><span class="style15">*</span><br />
<textarea name="mess" rows="4" cols="47"></textarea>
</div>
</form>
<table width="541" border="0" align=center>
<tr>
<td width="535"><div align="center"><span class="style10">поля, отмеченные [<span
class="style14">*</span>] - обязательные для заполнения</span></div></td>
</tr>
</table>
<?php
echo '<div id="Layer13">';
echo '<div align="center">';
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo '<img src="captcha.php" border="0" alt="" /><br/>';
echo '<input type="text" name="code" value="" /><br/>';
echo '<input type="submit" name="submit" value="Отправить" />';
echo '</form>';
echo '</div>';
echo '</div>';
}
function complete_mail() {
// $_POST['FIO'] содержит данные из поля "Фамилия Имя Отчество", trim() - убираем все лишние
пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем
считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и substr($_POST['FIO'], 0,
100) - урезаем текст до 100 символов. Для переменных $_POST['Mail'], $_POST['Phone'], $_POST['mess'] все
аналогично
$_POST['FIO'] = substr(htmlspecialchars(trim($_POST['FIO'])), 0, 100);
$_POST['Mail'] = substr(htmlspecialchars(trim($_POST['Mail'])), 0, 50);
$_POST['Phone'] = substr(htmlspecialchars(trim($_POST['Phone'])), 0, 30);
$_POST['mess'] = substr(htmlspecialchars(trim($_POST['mess'])), 0, 1000000);
// если не заполнено поле "Имя" - показываем ошибку 0
if (empty($_POST['FIO']))
output_err(0);
// если не заполнено поле "Сообщение" - показываем ошибку 2
if(empty($_POST['mess']))
output_err(2);
// создаем наше сообщение
// require 'class.phpmailer.php';
$mess = '
Имя отправителя:'.$_POST['FIO'].'
Контактный email:'.$_POST['Mail'].'
Контактный телефон:'.$_POST['Phone'].'
Сообщение:'.$_POST['mess'];
$Title = 'massege from site';
// $to - кому отправляем
$to = 'tat.yasha@mail.ru';
// $from - от кого
$from='test@mail.ru';
mail($to, $Title, $mess, "From:".$from);
echo 'Спасибо! Ваше письмо отправлено.';
}
function output_err($num)
{
$err[0] = 'ОШИБКА! Не введено имя.';
$err[1] = 'ОШИБКА! Неверно введен e-mail.';
$err[2] = 'ОШИБКА! Не введено сообщение.';
echo '<p>'.$err[$num].'</p>';
show_form();
exit();
}
if (!empty($_POST['submit'])){
if($_POST['code'] == $_SESSION['code'])
// echo '<p style="color:green">Защитный код верен!</p>';
// echo '.$_POST['FIO'].';
complete_mail();
else
echo '<p style="color:red">Неверный защитный код!</p>';
unset( $_SESSION['code'] );
show_form();
}
else show_form();
?>
</div>
Подскажите, в чем ошибка?!