Использование системной капчи со своими скриптами

#
Re: Использование системной капчи со своими скриптами
?
ку
#
Re: Использование системной капчи со своими скриптами
Пример простой формы отправки письма с капчой
<?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>Ваше сообщение:&nbsp;*</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>&nbsp;Поля, отмеченные звездочкой * обязательны для заполнения.</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();

?>
Авторизация