Версия для печати темы
Форум веб-мастеров _ Веб-программирование (PHP, CGI, ASP, ...) _ Отправка сообщений с сайта
Автор: Виктор 23.9.2007, 16:56
Здравствуйте!
Кто может посоветовать хороший код для отправки сообщений с сайта, с проверкой заполненных полей?
Автор: sashkovishe 23.9.2007, 19:16
Цитата(Виктор)
Здравствуйте!Кто может посоветовать хороший код для отправки сообщений с сайта, с проверкой заполненных полей?
Самому написать...

Для отправки на email это будет несложно…
Автор: Виктор 23.9.2007, 20:08
если сам не могу..
Автор: sashkovishe 23.9.2007, 22:19
Цитата(Виктор)
если сам не могу..
Ну раз так, тогда вот, выкладываю свой скрипт (когда то писал я, для одного сайта) который отправляет сообщение на заданный (к коде) E-mail, с проверкой..
Может вам подойдет:
vopros.php ( 2.77 килобайт )
Кол-во скачиваний: 117
Автор: Виктор 25.9.2007, 18:24
у меня есть форма заказа большая, и мне нужно чтобы нажимая на кнопку посетитель переходил на нужную мне страничку, а все заполненные данные отправлялись на указанный в скрипте майл. Ну что-то вроде того!
Автор: sashkovishe 25.9.2007, 19:39
Цитата(Виктор)
и мне нужно чтобы нажимая на кнопку посетитель переходил на нужную мне страничку, а все заполненные данные отправлялись на указанный в скрипте майл. Ну что-то вроде того!
Ну это все делается так примерно:
Код
if (@$go)
{
if (mail($to, $subject, $body)) {
Header(”Location: <нужная страница.php>”);
} else { echo "Ошибка отправки сообщение”; }
}
Где переменные:
$go – имя кнопки формы (name)
$to адрес получателя, $subject – тема сообщения, $body – текст сообщения
Автор: gid 25.9.2007, 20:22
Цитата
у меня есть форма заказа большая, и мне нужно чтобы нажимая на кнопку посетитель переходил на нужную мне страничку, а все заполненные данные отправлялись на указанный в скрипте майл. Ну что-то вроде того!
Есть до предела простой скрипт-обработчи данных из форм отправленных через метод POST, писал для одного из своих проектов:
Код
<?php
@header("Content-type: text/html; charset=windows-1251");
@header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // дата в прошлом
@header("Last-Modified: " . gmdate("D, d M Y H:i:s", 10000) . " GMT"); // 1 января 1970
@header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
@header("Cache-Control: post-check=0, pre-check=0", false); // еще раз, для надежности
@header("Pragma: no-cache");
if (isset($_POST))
{
$tmp = "";
foreach ($_POST as $key => $val)
{
$tmp .= $key . ": " . $val . "\r\n----------\r\n";
}
if (mail("Ваш_ящик@домен.ру", "Тема письма", $tmp)) echo "Ваше сообщение отправленно!";
else echo "Ошибка!!!";
}else echo "Ошибка!!! Не заполнены поля формы!!!";
?>
ps
для данного скрипта не имеет значение, сколько элементов есть в форме, будут обработанны все.
Автор: Виктор 27.9.2007, 17:16
Спасибо вам большое! А как сделать так, чтобы не все поля были обязательными?
Автор: Виктор 29.9.2007, 23:01
А например только сообщение и майл, а имя не обязательно (ну это в стандартных формах)
Разве никто не знает? Помогите, очень нужно!
Автор: sashkovishe 30.9.2007, 7:11
Цитата(Виктор)
А например только сообщение и майл, а имя не обязательно (ну это в стандартных формах)
Если для двух полей, ну можно поставить просто проверку, просто проверять именно эти два поля и все...
Код
if (trim($_POST['email']) == '')
{
echo "Ошибка! Не заполнено поле email";
}
if (trim($_POST['mass']) == '')
{
echo "Ошибка! Не заполнено поле сообщение";
}
Автор: Виктор 30.9.2007, 12:52
Хорошо, а такой скрипт можно использовать, когда нужно допустим 7 из 20 полей сделать обязательными? Просто перечислить как там?
Автор: sashkovishe 30.9.2007, 20:04
Цитата
Хорошо, а такой скрипт можно использовать, когда нужно допустим 7 из 20 полей сделать обязательными? Просто перечислить как там?
Да, просто перечислить какие поля обязательны к заполнению и все... или можно поступить проще (объединить все обязательные поля в одно условие) , например:
Код
if (trim($_POST['name']) == '' || trim($_POST['email']) == '' || trim($_POST['mess']) == '') < и т.д.... > )
{
echo "Ошибка! Вы Не заполнили обязательные поля!!! ";
}
p.s. " || " – означает "или"... фун-ия trim удаляет из начала и конца строки пробелы
Автор: Виктор 1.10.2007, 20:41
Код
// <<< - Stoned Animations online © 2000 - 2001 - >>>
// All you need to change is the e-mail addy:
$email = '';
$subject = '';
//foreach ($HTTP_POST_VARS as $var) {
foreach ($HTTP_POST_VARS as $key => $value) {
$text .= "$key = $value \n";
}
$from = $HTTP_POST_VARS['name'] . ' ' . $HTTP_POST_VARS['email'];
mail($email,$subject,$text,"From: $from\nReply-To: $from\n");
?>
<html>
<head>
<title>Отправлено!</title>
</head>
<body bgcolor="#ffffff" text="#000000">
<p align="center"><font size="2" face="Arial"><b>Ваш заказ был успешно отправлен!!! В ближайшее время наши сотрудники свяжутся с вами!!! Спасибо за использование нашего сервиса!</b></font>
</body>
</html>
Вот, у меня есть такой скрипт. Он отсылает все что была заполнено в форме на указанный в нем майл. Но не проверяет заполнены ли поля.

Я вставил в него тот код который Вы мне дали, но почему-то сообщение не отправляется вообще.
Скажите кто может в чем тут проблема.
Автор: sa†ana 2.10.2007, 3:46
Цитата(Виктор @ 1.10.2007, 21:41)

Я вставил в него тот код который Вы мне дали, но почему-то сообщение не отправляется вообще.
Скажите кто может в чем тут проблема.
- ну чтобы ответить нужно посмотреть подправленный код...
Этот код должен работать....
Код
<?
// <<< - Stoned Animations online © 2000 - 2001 - >>>
// All you need to change is the e-mail addy:
//foreach ($HTTP_POST_VARS as $var) {
foreach ($HTTP_POST_VARS as $key => $value) {
$text .= "$key = $value \n";
}
if (trim($_POST['name']) == '' || trim($_POST['email']) == '' || trim($_POST['mess']) == '') /*< и т.д.... >*/
{
echo "Ошибка! Вы Не заполнили обязательные поля!!! ";
}
else
{
$from = $HTTP_POST_VARS['name'] . ' ' . $HTTP_POST_VARS['email'];
mail($email,$subject,$text,"From: $from\nReply-To: $from\n");
}
?>
<html>
<head>
<title>Отправлено!</title>
</head>
<body bgcolor="#ffffff" text="#000000">
<p align="center"><font size="2" face="Arial"><b>Ваш заказ был успешно отправлен!!! В
ближайшее время наши сотрудники свяжутся с вами!!! Спасибо за использование нашего сервиса!
</b></font>
</body>
</html>
Осталось лишь подправить условие
Автор: Виктор 2.10.2007, 22:27
не работает все равно! Нажимаю отправить, потом открывается страница на которой написано ошибка Вы ввели не все поля формы а внизу сообщение что письмо отправлено (но оно не отправилось).
Автор: gid 2.10.2007, 23:04
Может в форме используется метод передачи данных GET? Тогда нужно заменить $HTTP_POST_VARS на $HTTP_GET_VARS и $_POST на $_GET.
А вообще, вот мой переработанный скрипт:
Код
<?php
@header("Cache-Control: no-store, no-cache, must-revalidate");
$need_val = array("name", "email", "mess"); // Имена обязательных полей, указывать обязательно в том же регистре что и в форме
if (isset($_GET))
{
$have_val = array_keys($_GET);
$result = array_intersect ($have_val, $need_val);
if (sizeof($result)<>sizeof($need_val)) die("Не все обязательные поля заполненны!");
$tmp = "";
foreach ($_GET as $key => $val)
{
$tmp .= $key . ": " . $val . "\r\n----------\r\n";
}
if (mail("gid87@mail.ru", "Тема письма", $tmp)) echo "Ваше сообщение отправленно!";
else echo "Ошибка отправки!!!";
}
else echo "Ошибка!!! Не заполнены поля формы!!!";
?>
ps
если не будет работать, то замените $_GET на $_POST
Автор: Виктор 12.11.2007, 22:14
Здравствуйте! Попробовал скрипт, с переменной $_GET он все время пишет что не все поля заполнены, хотя они заполнены. А с переменной $_POST с формы все отправляется, но не проверяется.
Автор: gid 12.11.2007, 22:24
А вы строчку:
Код
$need_val = array("name", "email", "mess"); // Имена обязательных полей, указывать обязательно в том же регистре что и в форме
исправили на свои значения???
Если в скрипте используется $_POST то и в форме то же должен использоваться этот метод передачи данных, т.е.:
Код
<form action="http://путь_к_скрипту.php" method="post">
Автор: Виктор 13.11.2007, 19:27
Да, исправил. В форме стоит та же переменная. Если стоит не та переменная в форуме, то скрипт всегда пишет что не все данные заполнили, а если та же, то даже если не заполнено отсылает сообщение
Автор: Виктор 16.11.2007, 18:39
Никто не поможет?
Автор: sashkovishe 16.11.2007, 21:49
Покажите полностью ваш скрипт... если можно вместе с формой...
Автор: Виктор 17.11.2007, 18:08
Код
<form name="doska" method="GET" action="http://silaautomira.ru/mailform1.php">
<table width="722" border="1" cellspacing="0" cellpadding="0" bordercolor="#A6FFED">
<tr bgcolor="#F0FEFF">
<td colspan="4">Поля помеченные * обязательны для заполнения. Использование
HTML-тегов запрещено. </td>
</tr>
<tr bgcolor="#F0FEFF">
<td width="142">Марка:<font color="#FF0000">*</font></td>
<td width="218">
<input type="text" name="marka">
</td>
<td width="129">Цвет:</td>
<td width="223">
<select id="ucUserAvtoMarketAdd_ucUserAddCarInfo_idColor" name="color">
<option selected value="0">-</option>
<option value="1">Бежево-красный металлик</option>
<option value="2">Бежево-розовый</option>
<option value="3">Бежевый</option>
<option value="4">Белый двухслойный</option>
<option value="5">Бело-желтый</option>
<option value="6">Белый</option>
<option value="7">Голубой</option>
<option value="8">Желто-зеленый</option>
<option value="9">Желтый</option>
<option value="10">Зелено-голубой</option>
<option value="11">Зелено-синий</option>
<option value="12">Зеленый</option>
<option value="13">Золотисто-зеленый</option>
<option value="14">Золотисто-серый</option>
<option value="15">Золотой</option>
<option value="16">Коричневый</option>
<option value="17">Красно-коричневый</option>
<option value="18">Красный</option>
<option value="19">Красный металлик</option>
<option value="20">Светло-бежевый</option>
<option value="21">Светло-желтый</option>
<option value="22">Светло-зеленый</option>
<option value="23">Светло-серый</option>
<option value="24">Серебристо-бежевый</option>
<option value="25">Серебристо-голубой</option>
<option value="26">Серебристо-зеленый</option>
<option value="27">Серебристо-золотой</option>
<option value="28">Серебристо-синий</option>
<option value="29">Серебристо-черный</option>
<option value="30">Серебристый</option>
<option value="31">Серебристый желто-зеленый</option>
<option value="32">Серебристый зелено-голубой</option>
<option value="33">Серебристый красный</option>
<option value="34">Серебристый коричнево-зеленый</option>
<option value="35">Серебристый металлик</option>
<option value="36">Серебристый оранжевый</option>
<option value="37">Серебристый серо-зеленый</option>
<option value="38">Серебристый сине-зеленый</option>
<option value="39">Серебристый сине-фиолетовый</option>
<option value="40">Серебристый темно-бордовый</option>
<option value="41">Серебристый темно-зеленый</option>
<option value="42">Серебристый темно-красный</option>
<option value="43">Серебристый темно-синий</option>
<option value="44">Серебристый темно-фиолетовый</option>
<option value="45">Серебристый темный</option>
<option value="46">Серебристый фиолетовый</option>
<option value="47">Серебристый ярко-зеленый</option>
<option value="48">Серебристый ярко-красный</option>
<option value="49">Серебристый ярко-синий</option>
<option value="50">Серо-бежевый</option>
<option value="51">Серо-бежевый металлик</option>
<option value="52">Серо-белый</option>
<option value="53">Серо-голубой</option>
<option value="54">Серо-зеленый</option>
<option value="55">Серо-зеленый металлик</option>
<option value="56">Серо-фиолетовый</option>
<option value="57">Сине-зеленый</option>
<option value="58">Синий</option>
<option value="59">Сливочно-белый</option>
<option value="60">Темно-бежевый</option>
<option value="61">Темно-бордовый</option>
<option value="62">Темно-голубой</option>
<option value="63">Темно-зеленый</option>
<option value="64">Темно-коричневый</option>
<option value="65">Темно-красный</option>
<option value="66">Темно-серый металлик</option>
<option value="67">Темно-синий</option>
<option value="68">Темный серо-синий</option>
<option value="69">Фиолетово-синий металлик</option>
<option value="70">Фиолетовый</option>
<option value="71">Черный</option>
<option value="72">Ярко-белый</option>
<option value="73">Ярко-красный</option>
<option value="74">Ярко-синий</option>
<option value="75">Ярко-фиолетовый</option>
<option value="76">Бежевый металлик</option>
<option value="77">Белый металлик</option>
<option value="78">Золотой металлик</option>
<option value="79">Темно-красный металлик</option>
<option value="80">Голубой металлик</option>
<option value="81">Желтый металлик</option>
<option value="82">Зеленый металлик</option>
<option value="83">Золотой металлик</option>
<option value="84">Коричневый металлик</option>
<option value="85">Оранж</option>
<option value="86">Оранж металлик</option>
<option value="87">Пурпурный металлик</option>
<option value="88">Рубиновый</option>
<option value="89">Серый</option>
<option value="90">Серый металлик</option>
<option value="91">Синий металлик</option>
<option value="92">Светло-Коричневый</option>
<option value="93">Темно-Зеленый металлик</option>
<option value="94">Темно-Красный металлик</option>
<option value="95">Темно-Фиолетовый</option>
<option value="96">Фиолетовый металлик</option>
<option value="97">Черный металлик</option>
<option value="98">Розовый</option>
<option value="99">Розовый металлик</option>
<option value="100">Светло-Зеленый металлик</option>
<option value="101">Светло-Голубой металлик</option>
<option value="102">Бордовый</option>
<option value="103">Бордовый металлик</option>
</select>
</td>
</tr>
<tr>
<td width="142" height="35">Модель:<font color="#FF0000">*</font></td>
<td width="218" height="35">
<input type="text" name="model">
</td>
<td width="129" height="35">Цена:<font color="#FF0000">*</font></td>
<td width="223" height="35">
<input type="text" name="zena">
</td>
</tr>
<tr bgcolor="#F0FEFF">
<td width="142" height="30">Год выпуска:<font color="#FF0000">*</font></td>
<td width="218" height="30" bgcolor="#F0FEFF">
<select id="ucUserAvtoMarketAdd_ucUserAddCarInfo_yearList" name="god">
<option selected value="NULL">-</option>
<option value="2008">2008</option>
<option value="2007">2007</option>
<option value="2006">2006</option>
<option value="2005">2005</option>
<option value="2004">2004</option>
<option value="2003">2003</option>
<option value="2002">2002</option>
<option value="2001">2001</option>
<option value="2000">2000</option>
<option value="1999">1999</option>
<option value="1998">1998</option>
<option value="1997">1997</option>
<option value="1996">1996</option>
<option value="1995">1995</option>
<option value="1994">1994</option>
<option value="1993">1993</option>
<option value="1992">1992</option>
<option value="1991">1991</option>
<option value="1990">1990</option>
<option value="1989">1989</option>
<option value="1988">1988</option>
<option value="1987">1987</option>
<option value="1986">1986</option>
<option value="1985">1985</option>
<option value="1984">1984</option>
<option value="1983">1983</option>
<option value="1982">1982</option>
<option value="1981">1981</option>
<option value="1980">1980</option>
<option value="1979">1979</option>
<option value="1978">1978</option>
<option value="1977">1977</option>
<option value="1976">1976</option>
<option value="1975">1975</option>
<option value="1974">1974</option>
<option value="1973">1973</option>
<option value="1972">1972</option>
<option value="1971">1971</option>
<option value="1970">1970</option>
<option value="1969">1969</option>
<option value="1968">1968</option>
<option value="1967">1967</option>
<option value="1966">1966</option>
<option value="1965">1965</option>
<option value="1964">1964</option>
<option value="1963">1963</option>
<option value="1962">1962</option>
<option value="1961">1961</option>
<option value="1960">1960</option>
<option value="1959">1959</option>
<option value="1958">1958</option>
<option value="1957">1957</option>
<option value="1956">1956</option>
<option value="1955">1955</option>
<option value="1954">1954</option>
<option value="1953">1953</option>
<option value="1952">1952</option>
<option value="1951">1951</option>
<option value="1950">1950</option>
</select>
</td>
<td width="129" height="30">Руль:</td>
<td width="223" height="30">
<select name="rul">
<option value="0" selected> -</option>
<option value="1">Правый</option>
<option value="2">Левый</option>
</select>
</td>
</tr>
<tr>
<td width="142" height="31">Тип кузова:<font color="#FF0000">*</font></td>
<td width="218" height="31">
<select id="ucUserAvtoMarketAdd_ucUserAddCarInfo_idTransportBodyType" name="kuzov">
<option selected value="0">-</option>
<option value="1">Внедорожник</option>
<option value="2">Кабриолет</option>
<option value="3">Комби</option>
<option value="4">Купе</option>
<option value="5">Лимузин</option>
<option value="6">Мини-вэн</option>
<option value="7">Пикап</option>
<option value="8">Седан</option>
<option value="9">Стретч</option>
<option value="10">Тарга</option>
<option value="11">Универсал</option>
<option value="12">Хэтчбек</option>
<option value="13">Фургон</option>
<option value="14">Микроавтобус</option>
</select>
</td>
<td width="129" height="31">Таможня:<font color="#FF0000">*</font></td>
<td width="223" height="31">
<select name="tamogn">
<option value="0" selected>-</option>
<option value="1">Не растаможен</option>
<option value="2">На Россию</option>
<option value="3">На область</option>
</select>
</td>
</tr>
<tr>
<td width="142" height="27">Тип двигателя:</td>
<td width="218" height="27" bgcolor="#F0FEFF">
<select name="dvigatel" id="ucUserAvtoMarketAdd_ucUserAddCarInfo_idEngineType">
<option selected value="0">-</option>
<option value="1">Бензин инжектор</option>
<option value="2">Бензин карбюратор</option>
<option value="3">Бензин турбонаддув</option>
<option value="4">Бензин ротор</option>
<option value="5">Дизель</option>
<option value="6">Турбодизель</option>
<option value="7">Гибридный</option>
</select>
</td>
<td width="129" height="27">Привод:</td>
<td width="223" height="27">
<select name="privod" id="ucUserAvtoMarketAdd_ucUserAddCarInfo_idDriveType">
<option selected value="0">-</option>
<option value="1">Задний</option>
<option value="2">Передний</option>
<option value="3">Полный</option>
</select>
</td>
</tr>
<tr>
<td width="142" height="33">Объем двигателя<font color="#FF0000">*</font></td>
<td width="218" height="33">
<input type="text" name="obom">
</td>
<td width="129" height="33">Состояние:<font color="#FF0000">*</font></td>
<td width="223" height="33">
<select name="sostoyanie">
<option selected value="0">-</option>
<option value="1">Новый</option>
<option value="2">Отличное</option>
<option value="3">Хорошее</option>
<option value="4">Среднее</option>
<option value="5">После аварии</option>
<option value="6">На запчасти</option>
</select>
</td>
</tr>
<tr>
<td height="61" width="142">Дополнительная информация:</td>
<td colspan="3" height="61">
<textarea name="mess" cols="70" rows="10"></textarea>
</td>
</tr>
<tr bgcolor="#F0FEFF">
<td colspan="4">Контактная информация: </td>
</tr>
<tr bgcolor="#F0FEFF">
<td width="142">Номер телефона:</td>
<td width="218">
<input type="text" name="telefon">
</td>
<td width="129" bgcolor="#F0FEFF">E-mail<font color="#FF0000">*</font></td>
<td width="223">
<input type="text" name="email">
</td>
</tr>
<tr>
<td width="142" height="17">Контактное лицо:<font color="#FF0000">*</font></td>
<td width="218" height="17">
<input type="text" name="name">
</td>
<td width="129" height="17">Страна:</td>
<td width="223" height="17">
<input type="text" name="strana">
</td>
</tr>
<tr>
<td width="142" bgcolor="#F0FEFF">Город</td>
<td width="218" bgcolor="#F0FEFF">
<input type="text" name="gorod">
</td>
<td bgcolor="#F0FEFF">WMID </td>
<td bgcolor="#F0FEFF">
<input type="text" name="textfield">
</td>
</tr>
</table> <p>
<input type="submit" name="Submit" value="Отправить">
<input type="reset" name="Submit2" value="Сброс">
</p>
</form>
Код
<?php
@header("Cache-Control: no-store, no-cache, must-revalidate");
$need_val = array("name", "email", "mess"); // Имена обязательных полей, указывать обязательно в том же регистре что и в форме
if (isset($_GET))
{
$have_val = array_keys($_GET);
$result = array_intersect ($have_val, $need_val);
if (sizeof($result)<>sizeof($need_val)) die("Не все обязательные поля заполненны!");
$tmp = "";
foreach ($_GET as $key => $val)
{
$tmp .= $key . ": " . $val . "\r\n----------\r\n";
}
if (mail("mail", "Тема письма", $tmp)) echo "Ваше сообщение отправленно!";
else echo "Ошибка отправки!!!";
}
else echo "Ошибка!!! Не заполнены поля формы!!!";
?>
Автор: gid 17.11.2007, 20:45
C формой все нормально, а вот в скрипте имена полей вы так и не указали. В общем, после небольшой доработки, скрипт для обработки этой формы должен выглядеть так:
Код
<?php
@header("Cache-Control: no-store, no-cache, must-revalidate");
$need_val = array("marka", "model", "zena", "god", "kuzov", "tamogn", "obom", "sostoyanie", "email" , "name"); // Имена обязательных полей, указывать обязательно в том же регистре что и в форме
if (isset($_GET))
{
$have_val = array_keys($_GET);
$result = array_intersect ($have_val, $need_val);
if (sizeof($result)<>sizeof($need_val)) die("Не все обязательные поля заполненны!");
$tmp = "";
foreach($need_val as $val)
{
if (isset($_GET[$val]))
{
if (empty($_GET[$val]))
{
die("Не все обязательные поля заполненны!");
}
}
else die("Не хватает обязательных полей!");
}
foreach ($_GET as $key => $val)
{
$tmp .= $key . ": " . $val . "\r\n----------\r\n";
}
if (mail("xxx@mail.ru", "Тема письма", $tmp)) echo "Ваше сообщение отправленно!";
else echo "Ошибка отправки!!!";
}
else echo "Ошибка!!! Не заполнены поля формы!!!";
?>
Автор: Виктор 18.11.2007, 14:19
Спасибо огромное! Все заработало! Чем мне Вас отблагодарить?
Автор: Виктор 24.11.2007, 0:08
Безкорыстный народ! Буду рекомендовать Ваш форум!
Автор: gid 24.11.2007, 0:14
Этот форум и сайт в основном мое хобби, а не работа
поэтому и помогаю (ем) бескорыстно... ну не считая рекламы, которая какую-никакую но все же денюжку приносит...
ps
моя работа - ссылка в подписи + еще кое что 
Invision Power Board ()
© Invision Power Services ()