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

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

Dobrozlo

#1
Я для своего сайта прикрутил форму сервиса 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

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

1ive

Well-known member
12.09.2010
621
1
#4

Это чистый 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] скрипт не сработал у меня, в остальных браузерах всё ОК
 

1ive

Well-known member
12.09.2010
621
1
#6
У вас просто ЧПУ не пускает к 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);
}
 

1ive

Well-known member
12.09.2010
621
1
#10
Модеры, поставьте плюсик). Человек не может...