Пример простой формы отправки письма с капчой
<?php
function show_form()
{
?>
<?php
$Captcha = new Captcha();
$x1 = $Captcha->GetCaptchaId();
?>
<form action="" method="post">
<p align="justify">Написать письмо</p>
<table width="550" cellspacing="0" cellpadding="0" border="0">
<tr>
<td width="150">Имя: *</td>
<td>
<p><input name="fio" class="form_field" size="50" /></p>
</td>
</tr>
<tr>
<td>Эл. почта: *</td>
<td><input class="form_field" size="50" name="contacts" /></td>
</tr>
<tr>
<td>Ваше сообщение: *</td>
<td><textarea class="form_field" cols="38" name="message"></textarea></td>
</tr>
<tr>
<td>
Введите код подтверждения:
</td>
<td>
<!-- Код подтверждения -->
<img src="/captcha.php?get_captcha=<?=$x1?>" /><br />
<input name="captcha_key" value="<?=$x1?>" type="hidden">
<input name="captcha_value" type="text">
<!-- //Код подтверждения -->
</td>
</tr>
<tr>
<td colspan="2">
<p align="center"><input type="submit" name="submit" value="Отправить письмо" /></p>
</td>
</tr>
</table>
<p> Поля, отмеченные звездочкой * обязательны для заполнения.</p>
</form>
<?php
}
function complete_mail() {
$_POST['fio'] = substr(htmlspecialchars(trim($_POST['fio'])), 0, 1000);
$_POST['contacts'] = substr(htmlspecialchars(trim($_POST['contacts'])), 0, 50);
$_POST['message'] = substr(htmlspecialchars(trim($_POST['message'])), 0, 1000000);
// если не заполнено поле "Имя" - показываем ошибку 0
if (empty($_POST['fio']))
output_err(0);
// если неправильно заполнено поле email - показываем ошибку 1
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email']))
output_err(1);
// если не заполнено поле "адрес" - показываем ошибку 5
if(empty($_POST['message']))
output_err(2);
// если не правильно введён код подтверждения - показываем ошибку 6
$Captcha = new Captcha();
$captcha_result = $Captcha->ValidCaptcha($_POST['captcha_key'], $_POST['captcha_value']);
if ($captcha_result == false)
output_err(3);
// создаем наше сообщение
$mess = '
ФИО: '.$_POST['fio'].'<br>
Эл. почта: '.$_POST['contacts'].'<br>
Сообщение: '.$_POST['message'];
// $to - кому отправляем
$to = 'cat.vaska@gmail.com';
// $from - от кого
$from='Обратная связь';
$from='=?koi8-r?B?'.base64_encode(iconv("UTF-8", "koi8-r", $from))."?=";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
$headers .= "From: $from \r\n";
mail($to, $from, $mess, $headers);
echo 'Ваше письмо отправлено!';
}
function output_err($num)
{
$err[0] = 'ОШИБКА! Не введено имя.';
$err[1] = 'ОШИБКА! Неверно введен e-mail.';
$err[2] = 'ОШИБКА! Не введено сообщние.';
$err[3] = 'ОШИБКА! Неправильный код подтверждения.';
echo '<p>'.$err[$num].'</p>';
show_form();
exit();
}
if (!empty($_POST['submit'])) complete_mail();
else show_form();
?>