ОсновноеRadiotalkПользовательское
Программирование
6   •   Посмотреть все темы

Oбработчик mail.php

 

6703
Андрей @ZloVeЩиЙ
Помогите написать простой PHP обработчик для отправки данных из полей на указанный e-mail
Вот сверстал такую form.php а обработчик не могу прикрутить.
Искал в интернете, подобных масса, скачал, залил - работает (:
добавил свои поля - не работает ):

20090
Dimitry @Dimitry
Дык а чего там прикручивать одна строка кода можно сказать)

if($_POST[send]) mail("for@mail.ru","tema","text $_POST[name]");

можешь вставлять туда свои переменные, пример для имени: $_POST[name]

6703
Андрей @ZloVeЩиЙ
Для тебя одна строка кода, а для меня целая наука (:
Я пока только на уровне теории с php.
Я вижу код, разбиваю его на логические части, понимаю что к чему... а когда доходит дело до практики - теряюсь.
Вот например эту строку я вижу так:
if($_POST[send]) mail("for@mail.ru","tema","text $_POST[name]");
если нажата кнопка имя которой = send функция mail(""); отправит на мыло for@mail.ru меседж с темой tema и содержимое его (меседжа) будет text имя из инпута имя которого = name
// поправьте если ошибаюсь...


[spoiler=анегдот по этому поводу]На паре по php.
Препод(П): Что значит «!=» ?
Студентка (С): Не равно.
П: А это «!==»?
С: Эмм.... Ваще не равно.[/spoiler]

20090
Dimitry @Dimitry
верно

6703
Андрей @ZloVeЩиЙ
Накидал тут, может кому надо будет, забирайте:
<?
if (!isset($_POST['name']) or empty($_POST['name'])) {
$error1 = "Вы забыли представиться!<br />";
} else $error1 = NULL;

if (!isset($_POST['email']) or empty($_POST['email'])) {
$error2 = "Вы не указали e-mail!<br />";
} else $error2 = NULL;

if (!isset($_POST['phone']) or empty($_POST['phone'])) {
$error3 = "Вы не указали номер телефона!<br />";
} else $error3 = NULL;

if (empty($error1) and empty($error2) and empty($error3)) {
$to = "mymail@gmail.com";
$subject = "Онлайн заказ с сайта";
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$datea = $_POST['datea'];
$datez = $_POST['datez'];
$adult = $_POST['adult'];
$child = $_POST['child'];
$text = $_POST['text'];
$message = "
Меня зовут: ".$name."
Мой телефон: ".$phone."
Мой e-mail: ".$email."
Дата заезда: ".$datea." - Дата выезда: ".$datez."
Взрослых: ".$adult." - Детей: ".$child."
Сообщение: ".$text;
if (mail($to, $subject, $message)) {
echo "<div class='yeap'><b>Отправлено!</b><br>После получения заявки менеджер свяжется с Вами по телефону или e-mail для подтверждения заказа.</div> ";
} else echo "Ошибка!";
} else {
echo "<div class='err'><b>Ошибочка!<br>".$error1.$error2.$error3."</b>Обязательные поля отмечены *</div>";
}
?>

Далеко от идеала, еще бы проверку дописать, не отправлять Сообщение: если оно пустое например т.д.
Но главное, что основную ф-кцию исполняет!
Кстати как отправлять html? Хотелось бы оформить как то или даже рассылку можно сделать (:

Отредактировано ZloVeЩиЙ - 21.11.2013
6703
Андрей @ZloVeЩиЙ
Как правильней будет?

if ($_POST['send'])
or
if (isset($_POST['send']))

Отредактировано ZloVeЩиЙ - 24.11.2013
4875
ValdeZ @ValdeZ
Поля ведь ещё стоит проверять на то, что там вообще введено. А то это прямой путь к SQL-инъекциям и не только

20090
Dimitry @Dimitry
ValdeZ пишет:

Поля ведь ещё стоит проверять на то, что там вообще введено. А то это прямой путь к SQL-инъекциям и не только

Осталось понять где в этом скрипте SQL )

7094
Dim @Render
Dimitry пишет:

ValdeZ пишет:

Поля ведь ещё стоит проверять на то, что там вообще введено. А то это прямой путь к SQL-инъекциям и не только

Осталось понять где в этом скрипте SQL )

Ага, скорее XSS.
_POST, _GET - всячески фильтровать вход.данные нужно, если важна безопасность)

4875
ValdeZ @ValdeZ
Render пишет:

Dimitry пишет:

ValdeZ пишет:

Поля ведь ещё стоит проверять на то, что там вообще введено. А то это прямой путь к SQL-инъекциям и не только

Осталось понять где в этом скрипте SQL )

Ага, скорее XSS.
_POST, _GET - всячески фильтровать вход.данные нужно, если важна безопасность)

Оу, перечитал код и теперь всё понятно)
Тогда да, как Рендер написал. Потому что простая проверка на то, заполнено ли поле - этого слишком мало.

6703
Андрей @ZloVeЩиЙ
Причем тут проверка? Причем тут SQL, XSS ?
Имеется ввиду если нажата кнопка сабмит с именем = имя.
if($_POST[send]) mail("for@mail.ru","tema","text $_POST[name]");
Просто дима мне привел один вариант, а я наткнулся на второй, они похожи, оба работают...
но интересует как правильней, так сказать на будущее, что бы в привычку вошло!

1555
Алексей @TheDark
ZloVeЩиЙ, всегда использую isset(). Оно ведь на такой случай и **********. И в коде нагляднее и правильнее вроде так...

Отредактировано TheDark - 25.11.2013
6703
Андрей @ZloVeЩиЙ
Согласен.
Но зачем писать больше кода?
Пример тому, все используют echo в то время когда есть ему аналог print, который выполняет одну и ту же функцию но имеет на один символ меньше... программисты они по сути же своей - ленивые существа (:

1555
Алексей @TheDark
ZloVeЩиЙ, та же тема с exit() и die() - оба синонимы) использую по настроению (:

Отредактировано TheDark - 25.11.2013
8497
Степан @Trilby
Без isset'а можно пережить, а вот **********'ом все же стоит вводимые данные обернуть.