О проектеГостеваяКарта сайта

Предложишь лучшее решение - получишь 100 рублей!

Отправка данных формы на почту (Email)

Задача: отправить данные из формы на почту.

Решение

PHP

<?php
/*
        form.php
        Тестовая форма для демонстрации обработки данных из формы в PHP
        Файл должен быть сохранён в кодировке utf-8
*/

header('Content-Type: text/html; charset=utf-8');
// Куда отправлять сообщения
$emailAddress = 'username@domain.zone';
// Адрес сайта, с которого он отправляет сообщения
$siteEmail = 'info@mysite.com';
// Тема сообщения
$emailTheme = 'Письмо с моего сайта';
?>
<html>
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Тестовая форма и её обработка</title>
</head>
<body>
        <h3>Тестовая форма и её обработка</h3>
        <form name="testForm" method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>">
        <table>
                <tr>
                        <td>Текстовый инпут</td>
                        <td><input type="text" name="first" value="" /></td>
                </tr>
                <tr>
                        <td>Раскрывающийся список</td>
                        <td>
                                <select name="second">
                                        <option value="1">Первое значение</option>
                                        <option value="2">Второе значение</option>
                                        <option value="3">Третье значение</option>
                                </select>
                        </td>
                </tr>
                <tr>
                        <td>Чекбоксы</td>
                        <td>
                                <input type="checkbox" name="third" value="On" /> - Первый чекбокс выбран<br />
                                <input type="checkbox" name="fourth" value="On" /> - Второй чекбокс выбран<br />
                                <input type="checkbox" name="fifth" value="On" /> - Третий чекбокс выбран
                        </td>
                </tr>
                <tr>
                        <td>Переключатели</td>
                        <td>
                                <input type="radio" name="sixth" value="1" /> - Первой<br />
                                <input type="radio" name="sixth" value="2" /> - Второй<br />
                                <input type="radio" name="sixth" value="3" /> - Третий
                        </td>
                </tr>
                <tr>
                        <td>Поле для текста</td>
                        <td><textarea name="seventh"></textarea></td>
                </tr>
                <tr>
                        <td>&nbsp;</td>
                        <td><input type="submit" name="sended" value="Отправить форму!" /></td>
                </tr>
        </table>
        <input type="hidden" name="eighth" value="Какое-нибудь значение скрытого поля" />
</form>
<?php
// Проверяем была ли отправлена форма
if(isset($_POST['sended'])) {
        // Переменная, в которую будем собирать текст нашего сообщения
        $message = 'Форма была отправлена!<br />';
        // Текстовый инпут теперь ы переменной $first
        $first = isset($_POST['first']) ? $_POST['first'] : '';
        $message .= 'В текстовый инпут ввели: ' . htmlspecialchars($first) . '<br />';
        // Раскрывающийся список
        $second = isset($_POST['second']) ? $_POST['second'] : '';
        $message .= 'В раскрывающемся списке был выбран элемент, у которого value = ' . htmlspecialchars($second) . '<br />';
        // Чекбоксы
        if(isset($_POST['third']))
                $message .= 'Первый чекбокс был выбран<br />';
        if(isset($_POST['fourth']))
                $message .= 'Второй чекбокс был выбран<br />';
        if(isset($_POST['fifth']))
                $message .= 'Третий чекбокс был выбран<br />';
        // Переключатели
        $sixth = isset($_POST['sixth']) ? $_POST['sixth'] : '';
        if(empty($sixth))
                $message .= 'Никакой переключатель не был выбран<br />';
        else
                $message .= 'Был выбран переключатель, у которого value = ' . htmlspecialchars($sixth) . '<br />';
        // Поле для текста
        $seventh = isset($_POST['seventh']) ? $_POST['seventh'] : '';
        $message .= 'В текстовое поле было введено: ' . nl2br(htmlspecialchars($seventh)) . '<br />';
        // Значение скрытого поля
        $eighth = isset($_POST['eighth']) ? $_POST['eighth'] : '';
        $message .= 'В скрытом поле было: ' . htmlspecialchars($eighth);
        // Отправляем письмо
        $headers = array(
                'MIME-Version: 1.0',
                'From: ' . $siteEmail,
                'Reply-To: ' . $siteEmail,
                'Content-Type: text/html; charset=utf-8'
        );
        if(mail($emailAddress, $emailTheme, $message, implode("\r\n", $headers)))
                $message .= '<br />PHP считает, что письмо отправлено, проверяй ящик! Загляни в спам, если письма не видно';
        else
                $message .= '<br />PHP считает, что письмо отправить не удалось...';
        // А также покажем на странице введённые данные и результат отправки письма
        echo($message);
}
?>
        </body>
</html>
 

Источник: http://files.my-web-dev.16mb.com/works/php/email/form.html Автор: Oleg

Демо работы функции

Тестовая форма и её обработка

Тестовая форма и её обработка

E-mail, на который мы отправим нашу форму
Текстовый инпут
Раскрывающийся список
Чекбоксы - Первый чекбокс выбран
- Второй чекбокс выбран
- Третий чекбокс выбран
Переключатели - Первой
- Второй
- Третий
Поле для текста
 

Рейтинг:

Теги: PHP почта форма

Если вы знаете более оригинальное, красивое, ЛУЧШЕЕ решение этой задачи, у вас есть шанс заработать 100 рублей!!! Если ваше решение будет признано лучшим, деньги ваши! Мы гарантируем выплату!

Всего 3 комментария

< !-- @form -- >

Подписаться на новые комментарии?

%form_captcha%

*Обзазательны для заполнения

PHP

 

Последние комментарии
  • phpguru

    Функция отличная только надо бы добавить для utf8 кодировку обработать строку, а то не все понимают как сделать подобное!
    $str = iconv_strlen($str,'UTF-8');
    Я так считаю!
    13-12-2013 в 12:59:38 ID# 454 посмотреть...


  • SnipCode.ru

    Возможно Вы правы, непонятно только зачем тут iconv_strlen (((
    13-12-2013 в 13:02:55 ID# 455 посмотреть...


  • Сергей

    поторопился, так надо в конце, пардон.
        return $v['pass'];
        }
    return FALSE;
    }

    02-12-2013 в 23:33:41 ID# 377 посмотреть...


  • Сергей

    Думаю все же логичней использовать foreach, т.к. можно промахнуться с ключами, а если массив ассоциативный (я раньше делал ключ = дата и время регистрации), то вообще работать не будет.
     
    function search($array,$login)
    {
       foreach ($array as $k=>$v)
        if($v['login'] == $login){
        return $v['pass'];
        }
    }
    return FALSE;
    Так, на минутку.
    Время исполнения смысла не имеет, авторизация используется 1 раз, если юзер не параноик)))

    02-12-2013 в 23:33:41 ID# 376 посмотреть...


  • Пабло

    Как сделана ваша система рейтинга,с учетом количеством людей,проголосовавших?
    11-11-2013 в 17:04:39 ID# 207 посмотреть...


  • SnipCode.ru

    ну...вобщем то все просто: берем общую оценку, делим на кол-во проголосовавших, получаем рейтинг
    11-11-2013 в 17:07:06 ID# 208 посмотреть...


  • Пабло

    Да,просто у меня возникли проблемы,при сохранении данных,в бд и отображение количество проголосовавших людей,у вас где нибудь на сайте описано как это сделано или будет?
     
    Мне нужна система рейтинга точно такая же как у вас=)
    11-11-2013 в 17:10:56 ID# 209 посмотреть...


  • KorniloFF

    Приведенный код обрезает до первой точки в строке, в случае, если в ней будет их несколько, что не соответствует теме.
    Вот код, обрезающий до последней точки:

    PHP

    $title= preg_replace("/([\s\S.]+)\.\w+$/","$1",$str)
     

    10-11-2013 в 10:45:29 ID# 205 посмотреть...


  • Виктор

    Все отлично работает! Извините , у меня есть задача отрезать после второй и до второй запятой , что нужно поправить в первом примере?
    Спасибо!
    30-09-2013 в 20:34:07 ID# 204 посмотреть...