Как запрограммировать форму обратной связи
Грех - не использовать чужой код, а грех в нём не разбираться(с). Следуя этой истине, иногда полезно взять уже готовое решение, проверенное временем. Естественно, если вы с нуля напишите форум, это будет огромный плюс в плане практики, но пока вы это сделаете уйдёт не мало времени. Да и не факт, что вы сумеете его довести до функциональности бесплатных альтернатив. Поэтому, когда я взялся написать скрипт для формы обратной связи, то решил поискать что-нибудь готовое. Оказывается, есть очень популярный класс для работы с почтовым сервером class.phpmailer.php |
Скачать его можно отсюда: https://phpmailer.codeworxtech.com.
В нём очень много полезных функций.
Сначала я просмотрел переменные, которые использует этот класс, и отметил для себя нужные.
var $Subject для темы письма
var $Body хранит сообщение письма.
var $From тут указываем e-mail от кого присылается письмо.
var $FromName а здесь имя отправителя.
Потом выбрал необходимые функции.
function AddAddress() здесь указываем ваш адрес, на который будут приходить письма и ваше имя.
function IsHTML() нужна, чтобы выставить формат письма.
function AddAttachment() если вы хотите разрешить прикреплять файлы к письму.
function send() ну и естественно письмо надо отправить, эта функция как раз для этого
Выбрав себе нужные функции, я решил написать скрипт для обработки формы обратной связи.
form.html
<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
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();
?>
Надеюсь, он кому-нибудь пригодится 😉 Кстати, для вас это будет хорошим примером, чтобы использовать уже полученные знания.
что-то я всё сделал как написано, но на моём сайте не работает эта форма. подскажи неучу, как правильно интегрировать эту форму в мой сайт. помоги, очень надо!!!
у меня на хосте поддерживается РНР.
Заранее спасибо!
Значит что-то сделано не как написано. Я же не знаю что у тебя за сайт. Ошибки хотя бы скинь
Добрый день!
А как я смогу увидеть, то что мне отправят с помощью form.html? Как работает данная форма?
Спасибо!
2 Leonid: Не совсем понял вопрос “как я смогу увидеть, что мне отправят с помощью form.html”. То что отправят через нее придет Вам на почту Так она и работает..
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
Подскажие пожалуйста что это за ошибка
Не может подключить файл class.phpmailer.ru, т.к. не находит его.
Спасибо!
Как мне создать файл class.phpmailer.ru?
Я может быть неправильно выражаюсь но я далек от PHP а форма нужна.Подскажите что нужно сделать?
Михаил, Вам нужно скачать PHPMailer отсюда: [ссылка]
поставил, настроил, но на мыло в полях “от кого”, “тема”, “кому” - вместо русских букв пришли закорючки - где искать причину проблемы?
Если закорючки - это значит неправильная кодировка (или при отображени письма выбрана неправильная кодировка, или при формировании письма)
уже разобрался, хост на UTF-8 оказался
А какую тут кодировку нужно поставить?? Скрипт у меня работает. Но вместо нормально текста приходит что то типа п п п п яяяяя - вот такое вот. Побовала меня на разные кодировки все равно также. Подскажите что поменять нужно и где? Меня кодировку в index.php.
Оксана, если отображается не то, что должно отображаться, это значит, что кодировка самого php-файла не такая, какую Вы записываете в него. Т.е. кодировка у него, к примеру, cp1251, а Вы пытаетесь внутри него преобразовать текст в другую кодировку с помощью iconv или еще как-то. Может быть кодировка базы у Вас не такая, какую Вы ожидаете (если Вы берете данные из базы).
Ну я сделала все так, как написано у вас. Перекопировала код на страничку. И отдельно создала Index.php(Открыла Notepad, ввела код, который написан у вас. и Сохранила как php.). А также скачала вот этот файл class.phpmailer. А что я могу поменять, даже не знаю. Какой файл я могу вообще поредактировать?? Заранее спасибо.
ну так кто нибудь поможет мне сделать так, чтоб сообщения приходили на рууском?? а то ничего не получается. с
Оксана, присылайте свои наработки по этому поводу мне на - я посмотрю, в чем проблема.
Здравствуйте! Я вам уже писала как-то. У меня просьба. Хочу изменить немного форму. У вас там есть строчки, имя, почта, тема и сам текст сообщения. А я хочу сделать например такие строчки: Имя, Фамилия, Почта, Телефон, ну или любую другую строчку, чтобы могли вписать туда данные. Текст сообщения убрать. Не подскажете как это сделать? Я пробовала сделать строчку фамилию, но там нет проверки, как в строчке Имя, ввели ли туда данные или нет. Буду рада если поможете сделать мне, а то в этом не разбираюсь.
А как вставить поле для телефона ?
С уважением.
Приветствую коллеги, помогите решить проблему: Нужно чтобы можно было прикрепить не только один фаил, а много если указан а то прикрепляется только последний фаил. чтобы одним инпутом можно было отослать несколько фаилов если их суммарный вес не привышает 20 мб .
Можно как то пройтись циклом forich по массиву $_FILE[‘attachfile’][] и прикрепить все фалы к письму, находящиеся в массиве “attachfile”
Кто то поможет написать скрипт к такой форме?
Добавить e-mail:
Добавить тел:
Добавить ссылку:
Добавить картинку: