Как запрограммировать форму обратной связи

email Как запрограммировать форму обратной связи Грех – не использовать чужой код, а грех в нём не разбираться(с). Следуя этой истине, иногда полезно взять уже готовое решение, проверенное временем. Естественно, если вы с нуля напишите форум, это будет огромный плюс в плане практики, но пока вы это сделаете уйдёт не мало времени. Да и не факт, что вы сумеете его довести до функциональности бесплатных альтернатив. Поэтому, когда я взялся написать скрипт для формы обратной связи, то решил поискать что-нибудь готовое. Оказывается, есть очень популярный класс для работы с почтовым сервером class.phpmailer.php

Скачать его можно отсюда: http://phpmailer.codeworxtech.com.

В нём очень много полезных функций.

Сначала я просмотрел переменные, которые использует этот класс, и отметил для себя нужные.

var $Subject для темы письма

var $Body хранит сообщение письма.

var $From тут указываем e-mail от кого присылается письмо.

var $FromName а здесь имя отправителя.

Потом выбрал необходимые функции.

function AddAddress() здесь указываем ваш адрес, на который будут приходить письма и ваше имя.

function IsHTML() нужна, чтобы выставить формат письма.

function AddAttachment() если вы хотите разрешить прикреплять файлы к письму.

function send() ну и естественно письмо надо отправить, эта функция как раз для этого

Выбрав себе нужные функции, я решил написать скрипт для обработки формы обратной связи.

form.html

<form action="index.php" method=post enctype="multipart/form-data">
<div align="center">
<br>Имя<br>
<input type="text" name="name" size="40">
<br>тема<br>
<input type="text" name="title" size="40">
<br>Контактный email<br>
<input type="text" name="email" size="40">
<br>Файл<br>
<input name="files" type="file" size="28">
<br>Сообщение<br>
<textarea rows="10" name="mess" cols="30"></textarea>
<br><br><input type="submit" value="send" name="submit">
</div>
</form>

index.php

<?php

    include "form.html";

    function send_mail() {
       
        $name  = htmlspecialchars($_REQUEST['name']);
        $email = htmlspecialchars($_REQUEST['email']);
   
        //  проверка на наличие имени
        if (empty($name)) {
            echo "не введено имя"; 
        } else {
           
        //  проверка правильности e-mail
       
        if(!preg_match("/^[0-9a-z_\.\-]+@[0-9a-z_\.\-]+\.[a-z]{2,6}$/i", $email)) {
            echo "неправильно введён e-mail";
        } else {
   
            $message = '<b>Hello from</b>'.$_REQUEST['name'].'<br /> <b>мой email </b>'.$_REQUEST['email'].'<br /> '.$_REQUEST['mess'];

            // подключаем класс
           
            include "class.phpmailer.php";

            $mail = new PHPMailer();
            $mail->From = $_REQUEST['email'];      
            $mail->FromName = $_REQUEST['name'];  
            $mail->AddAddress('megaadmin@yandex.ru','админу');
            $mail->IsHTML(true);      
            $mail->Subject = $_POST['title'];  
           
            if(isset($_FILES['files'])) {
               
                if($_FILES['files']['error'] == 0) {
                    $mail->AddAttachment($_FILES['files']['tmp_name'],$_FILES['files']['name']);
                }
       
            }
           
            $mail->Body = $message;
            if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
           
            echo 'письмо отправлено.';
        }
    }  
}

if (!empty($_POST['submit'])) send_mail();

?>

Надеюсь, он кому-нибудь пригодится icon wink Как запрограммировать форму обратной связи Кстати, для вас это будет хорошим примером, чтобы использовать уже полученные знания.





Читайте также:



17 Ответов на “Как запрограммировать форму обратной связи”

  1. игорь
    Декабрь 18th, 2008

    что-то я всё сделал как написано, но на моём сайте не работает эта форма. подскажи неучу, как правильно интегрировать эту форму в мой сайт. помоги, очень надо!!!
    у меня на хосте поддерживается РНР.
    Заранее спасибо!

  2. novice
    Декабрь 18th, 2008

    Значит что-то сделано не как написано. Я же не знаю что у тебя за сайт. Ошибки хотя бы скинь :)

  3. Leonid
    Декабрь 29th, 2008

    Добрый день!

    А как я смогу увидеть, то что мне отправят с помощью form.html? Как работает данная форма?

    Спасибо!

  4. novice
    Декабрь 30th, 2008

    2 Leonid: Не совсем понял вопрос “как я смогу увидеть, что мне отправят с помощью form.html”. То что отправят через нее придет Вам на почту :) Так она и работает..

  5. Михаил
    Апрель 21st, 2009

    Warning: include() [function.include]: Failed opening ‘class.phpmailer.php’ for inclusion (include_path=’.:/usr/local/lib/php’) in /home/users/d/degavyman/domains/sanseb.ru/sendmail.php on line 25

    Fatal error: Class ‘PHPMailer’ not found in /home/users/d/degavyman/domains/sanseb.ru/sendmail.php on line 27
    Подскажие пожалуйста что это за ошибка

  6. novice
    Апрель 21st, 2009

    Не может подключить файл class.phpmailer.ru, т.к. не находит его.

  7. Михаил
    Апрель 21st, 2009

    Спасибо!
    Как мне создать файл class.phpmailer.ru?
    Я может быть неправильно выражаюсь но я далек от PHP а форма нужна.Подскажите что нужно сделать?

  8. novice
    Апрель 21st, 2009

    Михаил, Вам нужно скачать PHPMailer отсюда: [ссылка]

  9. S3T
    Июль 10th, 2009

    поставил, настроил, но на мыло в полях “от кого”, “тема”, “кому” – вместо русских букв пришли закорючки – где искать причину проблемы?

  10. novice
    Июль 10th, 2009

    Если закорючки – это значит неправильная кодировка (или при отображени письма выбрана неправильная кодировка, или при формировании письма)

  11. S3T
    Июль 10th, 2009

    уже разобрался, хост на UTF-8 оказался

  12. Оксана
    Июль 19th, 2009

    А какую тут кодировку нужно поставить?? Скрипт у меня работает. Но вместо нормально текста приходит что то типа п п п п яяяяя – вот такое вот. Побовала меня на разные кодировки все равно также. Подскажите что поменять нужно и где? Меня кодировку в index.php.

  13. novice
    Июль 19th, 2009

    Оксана, если отображается не то, что должно отображаться, это значит, что кодировка самого php-файла не такая, какую Вы записываете в него. Т.е. кодировка у него, к примеру, cp1251, а Вы пытаетесь внутри него преобразовать текст в другую кодировку с помощью iconv или еще как-то. Может быть кодировка базы у Вас не такая, какую Вы ожидаете (если Вы берете данные из базы).

  14. Оксана
    Июль 20th, 2009

    Ну я сделала все так, как написано у вас. Перекопировала код на страничку. И отдельно создала Index.php(Открыла Notepad, ввела код, который написан у вас. и Сохранила как php.). А также скачала вот этот файл class.phpmailer. А что я могу поменять, даже не знаю. Какой файл я могу вообще поредактировать?? Заранее спасибо.

  15. Оксана
    Июль 30th, 2009

    ну так кто нибудь поможет мне сделать так, чтоб сообщения приходили на рууском?? а то ничего не получается. с

  16. novice
    Июль 30th, 2009

    Оксана, присылайте свои наработки по этому поводу мне на admin@i-novice.net – я посмотрю, в чем проблема.

  17. Оксана
    Октябрь 3rd, 2009

    Здравствуйте! Я вам уже писала как-то. У меня просьба. Хочу изменить немного форму. У вас там есть строчки, имя, почта, тема и сам текст сообщения. А я хочу сделать например такие строчки: Имя, Фамилия, Почта, Телефон, ну или любую другую строчку, чтобы могли вписать туда данные. Текст сообщения убрать. Не подскажете как это сделать? Я пробовала сделать строчку фамилию, но там нет проверки, как в строчке Имя, ввели ли туда данные или нет. Буду рада если поможете сделать мне, а то в этом не разбираюсь.

Оставить комментарий


© 2008 - 2012 i-novice.net | Все права защищены.