• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Помогите пожалуйста с формой хтмл/пхп

  • Автор темы Dobrozlo
  • Дата начала
D

Dobrozlo

Я для своего сайта прикрутил форму сервиса Cмартреспондера, но мне нужно что бы перед отправкой на сервис копия сообщения отправлялась мне по электронной почте. Помогите пожалуйста сделать это! Буду примного благодарен! Могу даже материально отблагодарить..
:facepalm:
PHP:
<!-- SmartResponder.ru subscribe form code (begin) --><script language="javascript" type="text/javascript">
function SR_IsListSelected(el)
{
for (var i = 0; i < el.length; i ++)
if (el[i].selected ||
el[i].checked)
return i;
return -1;
}
function SR_trim(f)
{
return f.toString().replace(/^[ ]+/, '').replace(/[ ]+$/, '');
}
function SR_submit(f)
{
f["field_name_first"].value = SR_trim(f["field_name_first"].value);
f["field_email"].value = SR_trim(f["field_email"].value);
f["field_phones"].value = SR_trim(f["field_phones"].value);
if ((SR_focus = f["field_name_first"]) && f["field_name_first"].value.replace(/^[ ]+/, '').replace(/[ ]+$/, '').length < 1 || (SR_focus = f["field_email"]) && f["field_email"].value.replace(/^[ ]+/, '').replace(/[ ]+$/, '').length < 1) { alert("Укажите значения всех обязательных для заполнения полей (помечены звездочкой)"); SR_focus.focus(); return false; }
if (!f["field_email"].value.match(/^[\+A-Za-z0-9][\+A-Za-z0-9\._-]*[\+A-Za-z0-9_]*@([A-Za-z0-9]+([A-Za-z0-9-]*[A-Za-z0-9]+)*\.)+[A-Za-z]+$/)) { alert("Некорректный синтаксис email-адреса!"); f["field_email"].focus(); return false; } 
return true;
}
</script>
<form style="margin: 0; padding: 0;" name="SR_form" action="http://smartresponder.ru/subscribe.html" method="post" onsubmit="return SR_submit(this)"><input type=hidden name=version value="1"><input type=hidden name=tid value="0"><input type=hidden name=uid value=""><input type=hidden name=lang value="ru">
<table width="400">
<tr><td style="padding: 5px; border: 1px solid #c9c9c6;background-color: #f5f5f1;" align=center><table cellspacing=1 cellpadding=2 align=center>
<tr><td><input type=hidden name="did[]" value="96952"></td></tr>
<tr><td style="font-family: Arial; font-size: 10pt; color: #000000;" align="left">Ваше имя:<font color="#ff0000"><b>*</b></font></td></tr>
<tr><td align="left"><input type=text size="20" style="font-family: Arial; font-size: 8pt; color: #000000; background-color: #ffffff; " name="field_name_first" value=""></td></tr>
<tr><td style="font-family: Arial; font-size: 10pt; color: #000000;" align="left">Ваш e-mail:<font color="#ff0000"><b>*</b></font></td></tr>
<tr><td align="left"><input type=text size="20" style="font-family: Arial; font-size: 8pt; color: #000000; background-color: #ffffff; " name="field_email" value=""></td></tr>
<tr><td style="font-family: Arial; font-size: 10pt; color: #000000;" align="left">Контактные телефоны:</td></tr>
<tr><td align="left"><input type=text size="20" style="font-family: Arial; font-size: 8pt; color: #000000; background-color: #ffffff; " name="field_phones" value=""></td></tr>
<tr><td align="center"><input name="SR_submitButton" type=submit style="font-family: Arial; font-size: 10pt; color: #000000; font-weight: bold;" value="Получить!"></td></tr></table></td></tr></table></form><!-- SmartResponder.ru subscribe form code (end) -->
 
D

Dobrozlo

Кто может помочь - пишите в icq 10408 или skype vladimir_v_selivanov
 
1

1ive


Это чистый javascript, он не умеет e-mail'ы отправлять.

Мой способ - перехват после проверки и отправка в фоновом режиме всех данных формы - ajax'ом - скрипту на PHP, который уже и отправляет письмо.
Итак.

1.Добавим к скрипту пару строк:

JavaScript:
var xmlHttp = false;

if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}

function sendemail(postcont){
url = 'sendemail.php?'+postcont;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}

2.И к функции SR_submit(); (перед return true;) допишем небольшой обработчик:

JavaScript:
	var field_name_first = f["field_name_first"].value;
var field_email = f["field_email"].value;
var field_phones = f["field_name_first"].value;

var postcont = "field_name_first="+encodeURIComponent(field_name_first)+"&field_email="+encodeURIComponent(field_email)+"&field_phones="+encodeURIComponent(field_phones);

sendemail(postcont);

3.Затем создадим в директории страницы файл sendemail.php с таким содержимым:

Код:
<?php $MailTo = "admin@1ive.ru"; //кому отправляем

if (isset($_GET['field_name_first']))
{
$data = 'Name:'.$_GET['field_name_first'].'; E-mail:'.$_GET['field_email'].'; Phones:'.$_GET['field_phones'];
mail($MailTo, "Сообщение из формы смартреспондера", $data);
}
?>

На сервере должна быть включена возможность отправки почты функцией mail();

Собственно всё, хочу заметить что в Firefox 6.0 [sup]beta[/sup] скрипт не сработал у меня, в остальных браузерах всё ОК
 
D

Dobrozlo

1ive, спасибо!! Но что то не срабатывает.
Я на этой странице сделал
 
1

1ive

У вас просто ЧПУ не пускает к sendemail.php

Тогда вставьте этот код в index.php:

PHP:
$MailTo = "admin@1ive.ru"; //кому отправляем

if (isset($_GET['field_name_first']))
{
$data = 'Name:'.$_GET['field_name_first'].'; E-mail:'.$_GET['field_email'].'; Phones:'.$_GET['field_phones'];
mail($MailTo, "Сообщение из формы смартреспондера", $data);
}

И поправьте функцию sendemail(); до такого вида.


JavaScript:
function sendemail(postcont){
url = 'index.php?'+postcont;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}
 
D

Dobrozlo

Поменял, но письма все равно не приходят
 
1

1ive

- архив с рабочим скриптом и формой
 
D

Dobrozlo

1ive, Спасибо большое!!!)
Работает!!!)
:love: :ithx: :YES:
 
1

1ive

Модеры, поставьте плюсик). Человек не может...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!