[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: отправляются пустые письма с формы
bannndi
Всем здрасте!

я новичок, только начинаю разбираться с php, и возникла такая задача - внести изменения в php скрипт, чтобы с формы на странице (форма типа "задать вопрос", есть три поля, имя, e-mail, вопрос. Письма отправляются на определенный ящик) не отправлялись пустые письма. Где взять пример кода для такой обработки? Чтобы при нажатии на кнопку отправить, если хоть одно поле не заполнено, то появлялся диалог, типа " заполните все поля"
Нужен хотяб примерчик, а тама разберусь думаю...)))))

PHP
$mailBody "\nИмя спрашивающего: " 
            
$name 
            
"\nE-mail спрашивающего: " 
            
$email 
            
"\nТекст вопроса: " 
            
"\n " .
            
$message;
            
$res mail("info@xxxxxx.ru""Question from web-site"$mailBody"From: website@xxxxxx.ru\nReply-To: $email\nContent-Type: text/plain; charset=windows-1251\nContent-Transfer-Encoding: 8bit");




Спустя 14 минут, 12 секунд (8.10.2009 - 19:27) twin написал(а):
Цитата
я новичок, только начинаю разбираться с php

Тогда попробуй это пичитать

Спустя 12 минут, 45 секунд (8.10.2009 - 19:39) bannndi написал(а):
Цитата (twin @ 8.10.2009 - 16:27)
Тогда попробуй это пичитать

прикол, в опере ас 3.6.2(10.00) ссылка не отобразилась вообще..
только когда цитату нажал, увидел, а так было "Тогда попробуй пичитать" Начал читать, спасиб.

Почитал, интересно, но про мой сабж нету тама.
Мне надо всего то, чтобы не отправлялись пустые письма по кнопке отправить. И диалог чтобы появлялся, типа "заполните все нужные поля"

Спустя 3 дня, 16 часов, 51 минута, 46 секунд (12.10.2009 - 12:31) bannndi написал(а):
Народ, подскажите, где можно еще почитать про это? можно даже без диалога обойтись, просто чтобы отображалось сообщение на странице, что не заполнены поля. Хотяб примерчик, а там уж попытаюсь самостоятельно.unsure.gif

Спустя 55 минут, 51 секунда (12.10.2009 - 13:27) twin написал(а):
В том классе, что я показал, это реализовано. При вызове отправки можно вывести текст ошибок. Он там правда на английском, но перевести я не думаю что проблема.

Спустя 5 часов, 15 минут, 31 секунда (12.10.2009 - 18:43) bannndi написал(а):
Цитата (twin @ 12.10.2009 - 10:27)
В том классе, что я показал, это реализовано. При вызове отправки можно вывести текст ошибок. Он там правда на английском, но перевести я не думаю что проблема.

twin,
чего я не вижу на этой странице никаких классов, может чего то другое имеешь ввиду? И на английском тама ничего нету... Наверное не ту ссылку дал? php.inkz.ru/mail/index.php?a=1

Спустя 1 минута, 23 секунды (12.10.2009 - 18:44) twin написал(а):
Тамм еще 10 страниц))) Ты как хотел, двумя строчками обойтись? Смотри менюшку.

Спустя 1 час, 59 минут, 56 секунд (12.10.2009 - 20:44) bannndi написал(а):
ну не 10, а 6 страниц unsure.gif

так, еще раз пройдемси, наверное упустил smile.gif

Спустя 16 часов, 46 минут, 31 секунда (13.10.2009 - 13:30) bannndi написал(а):
twin,
спасибо,
я кажись нашел нужный пример на 3-й странице, теперя столкнулся с проблемой - как с отдельной веб страницы с формой (где посетитель вводит в 3 отдельных поля инфу) закинуть в переменную $message все эти поля. Чтобы в теле письма была типа такая инфа:
чел.по имени $(с веб страницы)
у которого e-mail $(с веб страницы)
задал вопрос $(с веб страницы)
PHP
$to 'info@xxx.ru';
$subject 'Question from web-site';
$from 'website@xxx.ru';
$message 'вот такое вот письмо';

Спустя 1 час, 42 минуты, 21 секунда (13.10.2009 - 15:13) twin написал(а):
Там на последней странице есть полный листинг класса и его вызова. Нужно просто сформировать тело письма и передать его в класс.

Спустя 4 часа, 18 минут, 21 секунда (13.10.2009 - 19:31) bannndi написал(а):
Цитата (twin @ 13.10.2009 - 12:13)
Там на последней странице есть полный листинг класса и его вызова.  Нужно просто сформировать тело письма и передать его в класс.

twin,

чего то не понял я blink.gif Где тама написано, как в сделать так, чтобы в письмо попал текст из формы html страницы, а не тот, что уже забит в php обработке? Нада чтобы из html данные чудесным образом подставились в переменные обработки, если я пропустил где ето, подскажи уж.. Новичку тяжело разобраться unsure.gif

Спустя 43 минуты, 18 секунд (13.10.2009 - 20:14) twin написал(а):
Вот в аттаче рабочий пример. Поди сейчас то разберешься?

Спустя 1 час, 2 минуты, 10 секунд (13.10.2009 - 21:17) bannndi написал(а):
Цитата (twin @ 13.10.2009 - 17:14)
Вот в аттаче рабочий пример. Поди сейчас то разберешься?

если не разберусь то позор мне. тенкс энивэй unsure.gif

Спустя 13 часов, 2 минуты, 40 секунд (14.10.2009 - 10:19) bannndi написал(а):
twin,
подскажи пожалуйста, почему когда я нажимаю в твоем примере отправить, и из денвера открываю батом письмо, то текст открывается кодировкой из письма (utf-8), но при этом отображается коряво. Приходится менять на cyrillic(windows), тогда нормально. Сделал 4 попытки, из них 2 нормально с utf-8 отобразились, а 2 ненормально..

Ты мне код конечно навороченный дал, я пока таких тем не делал. Может быть есть что то попроще?

Просто у меня уже есть готовая php с формой и кнопкой отправить, есть готовый php-обработчик, код ниже приведу. В этом коде всего 10 строк. Я конечно понимаю, что твой код более правильный и ваще профессиональный, но у меня не тот уровень еще. Как мне кажется, в этом коде нада только то - вставить условие для того чтобы не отправлялись пустые письма и все. И текст чтобы писался, а то посетитель не поймет чего от него хотят

код писал не я, ты и так поймешь biggrin.gif

код для index.php
Свернутый текст
HTML
<form action="report2.php" method="post" name="forma">
<table style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" cellspacing="0" cellpadding="0" align="left">
<tbody>
<tr><td style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" width="100"><font face="Arial" size="2">Имя:</font></td><td style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px"><input class="textbox" style="WIDTH: 200px" maxlength="50" value="" name="mailname" /></td></tr>

<tr><td style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" width="100"><font face="Arial" size="2">E-mail:</font></td><td style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px"><input class="textbox" style="WIDTH: 200px" maxlength="100" value="" name="email" /></td></tr>

<tr><td style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" valign="top" width="100"><font face="Arial" size="2">Вопрос:</font></td><td style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px"><textarea class="textbox" style="WIDTH: 320px" name="message" rows="10"></textarea></td></tr>

<tr><td style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" align="center" colspan="2"><input class="button" type="submit" value="Отправить сообщение" name="sendmessage" /></td></tr>
</tbody>
</table>
</form>


код для report2.php
Свернутый текст
PHP
<?
$name $_POST['mailname'];
$email $_POST['email'];
$message $_POST['message'];

echo 
'<br />
 <font size="2" face="Arial"><b>Результат отправки вопроса</b></font> 
<br />'
;

// Заганяем все переменные в одну.

$mailBody "\nИмя спрашивающего: " 
            
$name 
            
"\nE-mail спрашивающего: " 
            
$email 
            
"\nТекст вопроса: " 
            
"\n " .
            
$message;    
$res mail("info@xxx.ru""Question from web-site"$mailBody"From: website@xxx.ru\nReply-To: $email\nContent-Type: text/plain; charset=windows-1251\nContent-Transfer-Encoding: 8bit");


if (
$res)
{
    echo 
'<p>Благодарим Вас за запрос, наши специалисты свяжутся с Вами в ближайшее время.
</p>'
;
}
Скрытый текст

Спустя 1 час, 13 минут, 31 секунда (14.10.2009 - 11:33) twin написал(а):
Ну не знаю... Что то у тебя с кодировками файлов наверно напутано. Все должно быть в utf-8.

Спустя 38 минут, 40 секунд (14.10.2009 - 12:11) twin написал(а):
Держи.

Спустя 4 минуты, 41 секунда (14.10.2009 - 12:16) twin написал(а):
Не тот файл скинул, сейчас смотри.

Спустя 10 часов, 59 минут, 4 секунды (14.10.2009 - 23:15) bannndi написал(а):
Цитата (twin @ 14.10.2009 - 08:33)
Ну не знаю... Что то у тебя с кодировками файлов наверно напутано. Все должно быть в utf-8.

twin,
а по поводу остального не можешь подсказать?

Спустя 54 минуты, 51 секунда (15.10.2009 - 00:10) twin написал(а):
А чего остального то, я же сделал все тебе...

Спустя 17 часов, 58 минут, 5 секунд (15.10.2009 - 18:08) bannndi написал(а):
Цитата (twin @ 14.10.2009 - 21:10)
А чего остального то, я же сделал все тебе...

блин, извини только сейчас увидел на новой странице твой месидж. Спасиб, еще не разбирал правда smile.gif

Спустя 9 часов, 45 минут, 4 секунды (16.10.2009 - 03:53) bannndi написал(а):
twin,
все отлично работает в денвере, только почему то в письме не появляются обычные заголовки тема, от кого, кому Так что получается письмо никуда не отправляется (раз нет "кому").
Хотя в режиме "показывать заголовки rfc-822" видно, что чтото есть этих полях (закодировано). Другие заголовки тоже нужны.
Все эти 3 заголовка - не меняются посетителем, всегда постоянные.
Как только перенесу на реальный сайт, если все будет работать, в долгу не останусь! smile.gif

Спустя 18 часов, 44 минуты, 34 секунды (16.10.2009 - 22:38) bannndi написал(а):
twin,
если не трудно, ты мне скажи пожалуйста. Может это какая то такая особенность денвера, что так происходит?

Спустя 59 минут, 55 секунд (16.10.2009 - 23:38) twin написал(а):
Что именно показать то? Вот у меня в денвере отработал:

Спустя 11 часов, 4 минуты, 57 секунд (17.10.2009 - 10:43) bannndi написал(а):
Цитата (twin @ 16.10.2009 - 20:38)
Что именно показать то? Вот у меня в денвере отработал:

twin,
Ты прав, это бат мне карты спутал. В аутлуке все отлично показывает.

Спустя 5 часов, 49 минут, 22 секунды (17.10.2009 - 16:32) bannndi написал(а):
twin,

перенес код, но письмо не отправляется. Я думаю что дело в том, что письмо можно отправлять только с одного ящика (который был раньше в поле "от"). То есть сейчас в поле "от" попадает значение из поля "E-mail:", а раньше, когда все отправлялось, там всегда был один и тот же ящик: info@xxx.ru

Другой вариант, что это может происходить из-за того, что адрес e-mail в поле "от" фигурирует в ковычках "xxx@xxx.ru", но это мое предположение.
Чтобы долго не искать где баг, я хочу тебя попросить сделать так чтобы в поле "от" письма адрес отправителя не менялся (по аналогии с темой письма и с получателем) smile.gif

Спустя 5 часов, 28 минут, 17 секунд (17.10.2009 - 22:00) twin написал(а):
я ничего не понимаю... кто от кого...и куда... толком поясни.

Спустя 17 часов, 20 минут, 15 секунд (18.10.2009 - 15:20) bannndi написал(а):
Цитата (twin @ 17.10.2009 - 19:00)
я ничего не понимаю... кто от кого...и куда... толком поясни.

Ну вот смотри, на твоем скрине из аутлука, есть заголовки "От" "Дата" "Кому" "Тема"
Так вот, меня волнует то, что в заголовок "От" вставляется тоже значение, что и в теле письма "E-mail спрашивающего". На твоей картинке это "email@mail.ru"

А мне хочется, чтобы там был статический адрес, конкретно "info@xxx.ru"

Такое пожелание возникло из-за того, что на моем хостинге код выполняется, но письмо не отправляется. И поэтому я хочу сделать заголовок "От" как был раньше, т.е. info@xxx.ru, и без кавычек smile.gif

Хотя если ты знаешь в чем может быть еще причина, то поделись пожалуйста smile.gif

Спустя 45 минут, 15 секунд (18.10.2009 - 16:06) twin написал(а):
Ну поставь сюда от...
PHP
$mail -> createFrom($to);

Спустя 3 часа, 25 минут, 12 секунд (18.10.2009 - 19:31) bannndi написал(а):
Цитата (twin @ 18.10.2009 - 13:06)
Ну поставь сюда от...
PHP
$mail -> createFrom($to);

twin,
прости, я тебя обманул. Не этот ящик, который info@xxx.ru нужен в заголовке "От", а этот "website@xxx.ru", без кавычек. А то я попробовал поменять эту строку $mail -> createFrom($to); и адрес занесся правильно, но с кавычками.
я так понял, надо добавить здесь переменную $from = 'website@xxx.ru':

Свернутый текст
PHP
if($ok && $name && $email && $message
    {
         
$from 'website@xxx.ru';
         
$to 'info@xxx.ru';    
         
$subject 'вопрос с веб-сайта';
         
$mailBody "\nИмя спрашивающего: " 
                     
$name 
                     
"\nE-mail спрашивающего: " 
                     
$email 
                     
"\nТекст вопроса: " 
                     
"\n " .
                     
$message;

Только не знаю как это значение ($from = 'website@xxx.ru';)заставить отобразиться в заголовке письма (по аналогии - также, как и $to = 'info@xxx.ru';)

Спустя 1 час, 40 минут, 41 секунда (18.10.2009 - 21:12) twin написал(а):
Кавычки ставит почтовый клиент. Скрипт ту ваще не при чем.
PHP
$mail -> createFrom($from);

Спустя 47 минут, 50 секунд (18.10.2009 - 21:59) bannndi написал(а):
Цитата (twin @ 18.10.2009 - 18:12)
Кавычки ставит почтовый клиент. Скрипт ту ваще не при чем.
PHP
$mail -> createFrom($from);

twin,
Сделал, получилось как мне надо поле "От" (правда с кавычками), только с хостинга не отправляется письмо.
Вот интересно, поле "Кому" идет без кавычек, а поле "От" с кавычками, хотя в коде отличий вроде нет.
Что может быть еще за проблема? Может быть такое, что сам хостер как то ограничил? Или где-то в битриксе надо регистрировать изменения?
Если у тебя есть возможность на реальном хостинге проверить, то можно было бы убедится точно, а то чето не заставить работать. Изменений в твоем коде никаких не делаю, все выложил на хостинг как есть. И отрабатывает как в денвере со всеми сообщениями, только письмо не отправляется................

Чуть не забыл, основная кодировка сайта windows-1251, а не utf-8
Может быть здесь проблема?

Спустя 12 часов, 16 минут, 59 секунд (19.10.2009 - 10:16) twin написал(а):
Пипец... Ты читать умеешь? Я же написал - кавычки ставит оутлук. Скрипт тут вообще не причем.
На реальных хостингах этот скрипрт проверен уже стопицот раз.
Кодировка основная windows-1251 - это хреново, но на отправку не влияет.

А вот хостер может ограничить и очень даже запросто.

Спустя 1 день, 5 часов, 43 минуты, 56 секунд (20.10.2009 - 16:00) bannndi написал(а):
Цитата (twin @ 19.10.2009 - 07:16)
Пипец... Ты читать умеешь? Я же написал - кавычки ставит оутлук. Скрипт тут вообще не причем.

Зачем так реагировать? Если подумать, то я тебя об этом не спрашивал больше, а просто поделился мыслями.

Приведи, пожалуйста, пример реальной страницы, где выполняется этот mailer.php. Мне не удается добится правды от хостера. Говорят, что код неработающий, и что в логах нет отправки ни одного письма с данными с моей формы. Также говорят, что указать на ошибку не могут, т.к. программированием не занимаются, и услуг подобных не оказывают. Я не могу понять такой политики, но уже просто интересно чем все закончится. блин.

Спустя 26 минут, 48 секунд (20.10.2009 - 16:27) twin написал(а):
Цитата
Зачем так реагировать?

Нормальная реакция на то, что тебя не слушают. Я же написал - не причем тут скрипт, искать надо в другом месте. В твоем случае наверняка на хостинге.

Вот здесь есть образец скрипта регистрации. Там этот класс, пробуй. И натычь хостера носом, там и описание рядышком.

Спустя 2 часа, 8 минут, 8 секунд (20.10.2009 - 18:35) bannndi написал(а):
Забыл спросить, в архиве был еще файл ".htaccess", что с ним надо было делать? Я его положил в папку с файлами index и mailer. Может здесь причина?

Спустя 2 часа, 22 минуты, 22 секунды (20.10.2009 - 20:58) twin написал(а):
Ну попробуй убрать. Вообще это для кодировки, мож у тебя хостинг их не любит... Есть такие.

Спустя 23 минуты, 32 секунды (20.10.2009 - 21:21) bannndi написал(а):
Цитата (twin @ 20.10.2009 - 17:58)
Ну попробуй убрать. Вообще это для кодировки, мож у тебя хостинг их не любит... Есть такие.

убрал. Раньше вид страницы index.php (до того как убрал ".htaccess"), не отображал header.php и footer.php. Зато сейчас отображает (т.е. теперь на index.php применился основной стиль сайта). Но при нажатии на кнопку "отправить" - не происходит перехода на страницу с адресной строкой .../index.php?gut (как раньше), а остается на месте - на странице .../index.php, причем письмо не отправляется, а на самой странице нет никаких данных, кроме как от header.php и footer.php Так что пока не добился ничего..

Может по своему опыту знаешь, петерхост - насколько нормальный хостер?
Или может посоветуешь кого? Из питерских правда только.

Спустя 58 минут, 2 секунды (20.10.2009 - 22:19) twin написал(а):
Откуда там это взялось?
.../index.php
еще и с тремя точками? У меня такого небыло вовсе.

Спустя 34 минуты, 44 секунды (20.10.2009 - 22:54) bannndi написал(а):
Цитата (twin @ 20.10.2009 - 19:19)
Откуда там это взялось?
.../index.php
еще и с тремя точками? У меня такого небыло вовсе.

под тремя точками подразумевается обычный путь до файла index.php
В данном случае это http://www.***.ru/faq/index.php

Спустя 16 часов, 12 минут, 25 секунд (21.10.2009 - 15:06) twin написал(а):
Тут не в хостинге дело. По видимому ты намудрил со структурой, раз стили бегают. Попробуй просто запустить его как есть, без всяких футеров и хидеров.

Спустя 26 минут, 32 секунды (21.10.2009 - 15:33) bannndi написал(а):
Цитата (twin @ 21.10.2009 - 12:06)
Тут не в хостинге дело. По видимому ты намудрил со структурой, раз стили бегают. Попробуй просто запустить его как есть, без всяких футеров и хидеров.

так поначалу я так и делал, без футеров и хедеров. Это потом, когда уже ничего не придумать больше было, вернул их.

Еще есть вариант - проверить на других хостингах, отпишусь.
Есть мажордомо и джино, может чего получится..........

Спустя 1 день, 4 часа, 42 минуты (22.10.2009 - 20:15) bannndi написал(а):
twin,
получилось проверить только на мажордомо, тама выскочила такая ошибка:
"Warning: Cannot modify header information - headers already sent by (output started at /home/u52174/totallink1ru/www/faq/index.php:2) in /home/u52174/totallink1ru/www/faq/index.php on line 53"

Спустя 15 минут, 37 секунд (22.10.2009 - 20:31) twin написал(а):
В личку мне стукни.

Спустя 12 часов, 12 минут, 5 секунд (23.10.2009 - 08:43) bannndi написал(а):
Цитата (twin @ 22.10.2009 - 17:31)
В личку мне стукни.

написал
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.