Возникли трудности с реализацией почтовой формы

Тема в разделе "PHP программирование", создана пользователем GROM, 7 окт 2009.

Статус темы:
Закрыта.
  1. GROM

    GROM Гость

    Доброго времени суток!
    Хотел приделать к форме контактов "капчу", так как совершенно замучили спамеры, но, увы, всё закончилось не начавшись. Не могу разобраться, что и куда вставлять, что бы работало. Заминка в том, что при нажатии кнопки "Отправить" срабатывает проверка заполнения полей, а сообщение не отправляется или на оборот, сообщение отправляется, но без проверки, даже "капча" не реагирует. Подскажите мне чайнику как исправить ошибку в коде, если конечно не лень с этим возиться.
    Вот такой код:

    Почтовая форма:
    Код (Text):
    < ? php
    include('kcaptcha.php');
    session_start();
    require_once("config.php");
    ? >
    < form action="./" enctype="multipart/form-data" method="post" name="cForm">
    <input type="hidden" name="act" value="y" />
    <input type="hidden" value="" name="title">
    Поле "Имя"
    Поле "Телефон"
    Поле "E-mail"
    Поле "Обзор"
    Поле "Сообщение"

    <img src="kcaptcha?<?php echo session_name()?>=<?php echo session_id()?>" id="captcha">
    <a href="java script:void(0);" onclick="getElementById('captcha').src =
    'kcaptcha?rnd=' + Math.random();">
    <img src="refresh.gif"></a></td>
    <input type="text" name="keystring" id="keystring" />
    <input type="submit" name="submit" id="submit" value="Отправить" />
    .
    < / form >
    .
    Обработчик config.php:
    Код (Text):
    < ? php
    function show_form()

    {}

    $statusError = "";
    $statusSuccess = "";

    $errors_fio = 'Введите контактное лицо';
    $errors_tel = 'Введите контактный телефон';
    $errors_mailfrom = 'Введите свой E-mail адрес';
    $errors_incorrect = 'Заполните правильно Ваш E-mail адрес';
    $errors_mess = 'Введите сообщение';
    $captcha_error = 'Код подтверждения введён не верно';
    $send = 'Ваше сообщение отправлено';

    if ($_POST['act']== "y")
    {
    if(isset($_SESSION['captcha_keystring']) &&

    $_SESSION['captcha_keystring'] == $_POST['keystring'])
    {

    if (isset($_POST['fio']) && $_POST['fio'] == "")
    {
    $statusError = "$fio";
    }
    elseif (isset($_POST['tel']) && $_POST['tel'] == "")
    {
    $statusError = "$errors_tel";
    }
    elseif (isset($_POST['email']) && $_POST['email'] == "")
    {
    $statusError = "$errors_mailfrom";
    }
    elseif(isset($_POST['email']) &&

    !preg_match("/^([a-z,._,0-9])+@([a-z,._,0-9])+(.([a-z])+)+$/",

    $_POST['email']))
    {
    $statusError = "$errors_incorrect";
    unset($_POST['email']);
    }
    elseif (isset($_POST['mess']) && $_POST['mess'] == "")
    {
    $statusError = "$errors_mess";
    }
    elseif (!empty($_POST))
    {
    $statusSuccess = "$send";
    }
    }else{
    $statusError = "$captcha_error";
    unset($_SESSION['captcha_keystring']);
    }
    }

    function complete_mail() {
    $_POST['title'] = substr(htmlspecialchars(trim($_POST['title'])), 0, 50);
    $_POST['fio'] = substr(htmlspecialchars(trim($_POST['fio'])), 0, 100);
    $_POST['tel'] = substr(htmlspecialchars(trim($_POST['tel'])), 0, 30);
    $_POST['email'] = substr(htmlspecialchars(trim($_POST['email'])), 0, 50);
    $_POST['mess'] = substr(htmlspecialchars(trim($_POST['mess'])), 0, 350);

    $mess = '

    Имя: '.$_POST['fio'].'
    Телефон: '.$_POST['tel'].'
    E-mail: '.$_POST['email'].'
    Сообщение: '.$_POST['mess'];

    require ('class.phpmailer.php');

    $mail = new PHPMailer();
    $mail->From = '';
    $mail->FromName = 'site.ru';
    $mail->AddAddress('mail@mail.ru', '');
    $mail->IsHTML(true);
    $mail->Subject = $_POST['title'];

    if(isset($_FILES['attachfile'])) {
    if($_FILES['attachfile']['error'] == 0){
    $mail->AddAttachment($_FILES['attachfile']['tmp_name'],

    $_FILES['attachfile']['name']);
    }
    }
    $mail->Body = $mess;
    if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
    }
    if (!empty($_POST['submit'])) complete_mail();
    else show_form();
    ? >
    .
    Спасибо за внимание.
     
Статус темы:
Закрыта.

Поделиться этой страницей