Форма обратной связи на php

Если вы хотите создать интернет магазин, то вам просто необходимо разместить форму обратной связи, чтобы люди могли отправлять сообщения администрации сайта. Обычно форма обратной связи распологается в разделе контакты..

Для отправки почтовых сообщений с сайта, пользователь должен заполнить стандартные тектстовые поля (ФИО, e-mail, сообщение), и нажать на кнопку «отправить сообщение».

При нажатии на «отправить сообщение», происходит отправка формы, потом обработка отправленных данных, и отправка письма.

Вот скрипт обратной связи на php:

<?php

/**
 * Класс отправки почтовых сообщений функций mail()
 * @author дизайн студия ox2.ru
 */
class Mail {
    
//В переменной храним тип сообщения, обычный текст, или html
    
private $_plain "text/plain";  

    
/**
     * Метод установки типа сообщения, если параметр $type = true, сообщение будет HTML,
     * если false, то обычный текст
     * @param <boolean> $type
     */

    
public function isTypeHtml($is_html true) {
        if (
$is_html == true) {
            
$this->_plain "text/html";
        } else {
            
$this->_plain "text/plain";
        }
    }

    
/**
     * Метод отправляет сообщение
     * @param string $to - e-mail, на который придет сообщение
     * @param <type> $to_name - Имя получателя
     * @param string $from - e-mail, с которого будет отправлено сообщение
     * @param <type> $from_name - Имя отправителя
     * @param string $subject - тема сообщения
     * @param <type> $message - сообщение
     * @return <type>
     */
    
public function send($to$to_name$from$from_name$subject$message) {
        
//Делаем правильные заголовки, чтобы русский был русским, и т.д.
        
$headers "From: =?windows-1251?B?" base64_encode($from_name) . "?= <$from>\r\n"
        
$headers .= "To: =?windows-1251?B?" base64_encode($to_name) . "?= <$to>\r\n";
        
$headers .= "Subject: =?windows-1251?b?" base64_encode($subject) . "?=\r\n";
        
$headers .= "Content-type: $this->_plain; charset=\"windows-1251\"\r\n";
        
$headers .= "X-Mailer: ox2.ru disign studio\r\n";
   
        
//Если сообщение отправлено, то возвращаем true
        
if (mail($to$subject$message$headers)) { 
            return 
true;
        }
        else return 
false//Если возникли ошибки при отправке сообщений, то false

    
}

}

if (isset(
$_POST["send"])) {
    
$mail = new Mail(); //Создаем класс Mail
    
$mail->isTypeHtml(false); //Ставим тип сообщения как обычный текст
    
$message "ФИО: " $_POST["fio"] . "\n\r"//Готовим само сообщение
    
$message .= "email: " $_POST["email"] . "\n\r";
    
$message .= "Сообщение: " $_POST["message"] . "\n\r";

    
//Отправляем сообщение
    
if ($mail->send("info@ox2.ru""Евгений""info@ox2.ru""Дизайн студия OX2.ru!",
                
"Сообщение с сайта"$message)) {
        echo 
"<p>Сообшение успешно отправлено!</p>";
    } else {
        echo 
"<p>Возникли ошибки при отправке сообщения!</p>";
    }
}
?>
<form method="post" action="">
    <table cellpadding="2" cellspacing="0" border="0">
        <tbody>
            <tr>
                <td valign="middle" align="right">Фио:</td>
                <td valign="middle" align="left">
                    <input type="text" value="" name="fio" size="25" maxlength="255" />
                </td>
            </tr>
            <tr>
                <td valign="middle" align="right">E-mail:</td>
                <td valign="middle" align="left">
                    <input type="text" value="" name="email" size="25" maxlength="255" /><br/>
                </td>
            </tr>
            <tr>
                <td valign="top" align="right">Сообщение:</td>
                <td valign="middle" align="left">
                    <textarea name="message" rows="5" cols="30"></textarea>
                </td>
            </tr>
            <tr>
                <td valign="middle" align="right" colspan="2">
                    <input type="submit" value="Отправить" name="send" />
                </td>
            </tr>
        </tbody>
    </table>
</form>

Для отправки письма из php, мы использовали стандартную функцию mail. Помимо нее можно отправлять письмо по сокетам, но об этом в следующей статье.

Скачать исходник
Содержание
Размещение любых материалов с сайта OX2.ru на других сайтах, блогах, печатных изданиях и т.д. ссылка на сайт http://ox2.ru/ обязательна!

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

Денис [21.05.2011 20:55]
Спасибо за статью!
Единственный код, который отправляет письма в нормальной кодировке на любые клиенты.
Андрей [17.04.2012 16:50]
почему ошибки выдает?
Администратор OX2 [17.04.2012 17:12]
А какие ошибки? (можете прислать код и сообщение ошибки)
Unoxiabox [15.05.2012 08:39]
Всем привет! Я здесь новенький. Хотел похвалить Ваш сайт. Очень интересный. Спасибо Вам что сделали его для нас.
Имя:
Сообщение: