Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2018, 11:13   #1
webmaster48
 
Регистрация: 21.08.2015
Сообщений: 6
По умолчанию Одновременно записать в базу и отправить на почту данные с формы

Доброго времени суток. Прошу строго не судить, в PHP я не просто новичок, а вообще впервые вижу, но работа в IT отделе компании, хотя и по совсем другому профилю, заставила обратиться к данному ЯП ("тыж программист", думаю почти каждый сталкивался. ) Так вот, была поставлена задача создать страничку в вебе на которой генерировались бы промокоды. Пользователь должен ввести свои данные, после чего жмакается кнопка "Получить промокод", по клику на кнопку должна произойти запись в БД и отправка кода на почту пользователя. Сам код генерируется в скрытом поле сразу после перехода пользователя на страницу. В общем проблем с генерацией кода и последующей записью всего в базу проблем не возникло. А вот как навесить на туже кнопку еще и отправку данных на почту пользователя, я честно говоря не могу сообразить. Пробывал и так и сяк - не получается. Не откажите тупому). Код ниже
Код:
<?php
require_once 'connect.php'; //Подключение к БД
mysql_set_charset('utf8');
if (isset($_POST['s_name']) && isset($_POST['name']) && isset($_POST['l_name']) && isset($_POST['phone']) && isset($_POST['e_mail']) && isset($_POST['code']) && isset($_POST['code'])){
// Забираем данные с формы
$s_name = $_POST['s_name'];
$name = $_POST['name'];
$l_name = $_POST['l_name'];
$phone = $_POST['phone'];
$e_mail = $_POST['e_mail'];
$code = $_POST['code'];
$date = $_POST['date'];
// Запись данных в БД
$insert_bd = mysql_query("INSERT INTO promocode (s_name,name,l_name,phone,e_mail,code,date) VALUES ('$s_name','$name','$l_name','$phone','$e_mail', '$code','$date')");
if ($insert_bd) {
echo '<p>Данные успешно добавлены в таблицу.<br> 
} 
else
die ('Не могу подключиться к БД' . mysql_error($db));
//Отправка письма с кодом пользователю
//???? Тут ступор :-(
}
?>
webmaster48 вне форума Ответить с цитированием
Старый 21.12.2018, 11:17   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

http://php.net/manual/en/function.mail.php
Или слать через собственный почтовый сервер.
p51x вне форума Ответить с цитированием
Старый 21.12.2018, 11:18   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Есть функция mail. Но обычно проще и лучше использовать сервисы типа Mailgun, особенно если не шарите в этом.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.12.2018, 12:54   #4
webmaster48
 
Регистрация: 21.08.2015
Сообщений: 6
По умолчанию

Спасибо всем откликнувшимся. Я использовал функцию mail(); но не работало. Но, после переопределения переменных, которые я в последствии и использовал в вышеупомянутой функции, все отлично заработало). Забавный язык). Надо поплотнее заняться им.) Работоспособный код выкладываю ниже. Может кому пригодиться.
Код:
<?php
require_once 'connect.php'; //Подключение к БД
mysql_set_charset('utf8');
if (isset($_POST['s_name']) && isset($_POST['name']) && isset($_POST['l_name']) && isset($_POST['phone']) && isset($_POST['e_mail']) && isset($_POST['code']) && isset($_POST['code'])){
// Переменные с формы
$s_name = $_POST['s_name'];
$name = $_POST['name'];
$l_name = $_POST['l_name'];
$phone = $_POST['phone'];
$e_mail = $_POST['e_mail'];
$code = $_POST['code'];
$date = $_POST['date'];
// Запись в БД
$insert_bd = mysql_query("INSERT INTO promocode (s_name,name,l_name,phone,e_mail,code,date) VALUES ('$s_name','$name','$l_name','$phone','$e_mail', '$code','$date')");
if ($insert_bd) {
      echo '<p>Данные успешно добавлены в таблицу.<br></p>';
    } 
   else
die ('Не могу подключиться к БД' . mysql_error($db));
$to = $e_mail;
$subject = 'Ваш промокод:';
$message = $code;
mail ($to, $subject, $message);
}
?>

Последний раз редактировалось webmaster48; 21.12.2018 в 12:56.
webmaster48 вне форума Ответить с цитированием
Старый 21.12.2018, 12:58   #5
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Цитата:
Сообщение от webmaster48 Посмотреть сообщение
Забавный язык
А еще забавно то, что в вашем коде есть критическая уязвимость, позволяющая удаленному недоброжелательному пользователю убить ваш сайт
Arigato вне форума Ответить с цитированием
Старый 21.12.2018, 13:00   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

...и скорее всего письма будут попадать в спам если сервер не настроен правильно и т.д.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.12.2018, 13:03   #7
webmaster48
 
Регистрация: 21.08.2015
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
А еще забавно то, что в вашем коде есть критическая уязвимость, позволяющая удаленному недоброжелательному пользователю убить ваш сайт
ну так подскажите где. вместо того чтоб критиковать. я РНР первый раз увидел только позавчера.
webmaster48 вне форума Ответить с цитированием
Старый 21.12.2018, 13:13   #9
webmaster48
 
Регистрация: 21.08.2015
Сообщений: 6
По умолчанию

Ну про инъекции то я в курсе, поверь. только вот конкретно в моем случае, где уязвимость? Я же не веб разработчик.
webmaster48 вне форума Ответить с цитированием
Старый 21.12.2018, 13:15   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

('11','11','11','11','11', '11','1');DROP TABLE users;--')"
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Требуется написать программу: 20 доменных машин и сервер. записать в базу mysql данные о доступности машин, кто и когда вошел onlinia Фриланс 2 14.06.2016 06:19
Программно отправить данные формы на сайт kockas Помощь студентам 1 29.05.2013 21:50
как передать данные формы на почту? omzo JavaScript, Ajax 2 08.10.2012 02:52
Просто отправить письмо на почту яндекса Человек_Борща Работа с сетью в Delphi 6 23.07.2011 15:01
Как отправить почту из папки автоматом? transkriptsiya Работа с сетью в Delphi 0 20.01.2010 17:35