|
 66 Кб |
|
| Прошу помощи по следующему вопросу.
На скриншоте представлены поля формы, которые заполняет пользователь, и эти поля потом должны переслаться
в виде электронного письма по адресу debora@ukr.net.
Подскажите, пожалуйста, содержание скрипта go_but_rus.php.
Блок кода для скриншота такой (я убрала табличную верстку):
<form method = "get" action = "go_but_rus.php">
<input type = "text" class="text_s" name="fio" size=50 value="" align="baseline">
<input type = "text" class="text_s" name="telephone" size=50 value="" align="baseline">
<input type = "text" class="text_s" name="email" size=50 value="" align="baseline">
<input type = "text" class="text_s" name="adresse" size=50 value="" align="baseline">
<input type="image" src="images/go_but.jpg" value="">
</form>
|
| |
|
|
|
|
|
|
|
для: Annette
(07.11.2009 в 21:24)
| | Формируете почтовое отправление: заголовки, сообщение..., и отправляете все это функцией mail. | |
|
|
|
|
|
|
|
для: Annette
(07.11.2009 в 21:24)
| | напишу чуть подробней :)
для отправки писем в РНР есть одна функция mail(). Ее описание:
bool mail(string $to, string $subject, string $msg [, string $headers])
она посылает почту с телом $msg (это может быть "многострочная" строка, т.е. переменная, содержащая несколько строк, разделенных символом перевода строки) по адресу $to.
Например:
mail(
"somebody@mail.ru", //адресат
"mail robot. Do not reply please!", //тема письма
"Hello!\nthis is welcome from PHP!");
|
конкретно по Вашему скрипту можно предложить такое решение:
$email = @REQUEST['email'] or die('Не заполнено поле e-mail!');
$fio = @REQUEST['fio'] or die('Не заполнено поле ФИО!');
$telephone = @REQUEST['telephone'] or die('Не заполнено поле телефон!');
$adresse = @REQUEST['adresse'] or die('Не заполнено поле адрес!');
$msg = "ФИО = $fio\n
Телефон = $telephone\n
Адрес = $adresse\n
Мыло = $email";
mail(
"debora@ukr.net", //адресат
"Заполненная форма", //тема письма
$msg //собственно тело письма
);
|
лучше для этих целей использовать готовые библиотеки по отправке почты. Метод, приведенный выше из рук вон плох с точки зрения безопасности, но работать будет :)
если что непонятно - пишите, что нибудь да придумаем | |
|
|
|
|
|
|
|
для: asptema
(08.11.2009 в 04:07)
| | B что ж здесь не так с точки зрения безопасности?
Неряшливо - да. Соответствие RFC - никакого. Но по безопасности - ни одной ошибки. | |
|
|
|
|
|
|
|
для: Trianon
(08.11.2009 в 07:59)
| | Спасибо большое.
Вот я написала пока что свой вариант:
//echo "fio:";
$fio = $_GET['fio'];
echo "$fio";
//echo "telephone:";
$telephone = $_GET['telephone'];
//echo "$telephone";
//echo "email:";
$email = $_GET['email'];
//echo "$email";
//echo "adresse:";
$adresse = $_GET['adresse'];
//echo "$adresse";
$mailto = "debora@ukr.net";
$msg = "<b>Фамилия, имя, отчество</b>"." ".$fio."<br />".
"<b>Телефон</b>"." ".$telephone."<br />".
"<b>Электронная почта</b>"." ".$email."<br />".
"<b>Адрес доставки</b>"." ".$adresse;
//echo "$msg";
$header = "Content-Type: text/html; charset=Windows-1251 Content-Transfer-Encoding: quoted-printable\n";
mail($mailto,"Калькулятор: обратная связь", $msg, $header);
?>
|
| |
|
|
|
|
|
|
|
для: Annette
(08.11.2009 в 10:08)
| | Здесь присутствуют попытки вписать письмо в критерии стандарта.
Но из-за ошибок - пока что лишь попытки.
Как минимум:
1. Перед полем Content-Transfer-Encoding: стоит пробел, а не перевод строки, а значит как поле эта часть строки воспринята не будет.
2. И хорошо, что не будет, поскольку метод кодирования, указанный в ней - quoted-printable - к телу сообщения не применяется.
3. и Content-Type и Content-Transfer-Encoding - поля, имеющие смысл лишь в рамках стандарта MIME.
Поля MIME-Version: 1.0 в заголовке почему-то нет.
4. Нет также поля From: и To:. Впрочем с этими полями в функции mail() php история темная, и не факт, что они бы поспособствовали, а не помешали... | |
|
|
|
|
|
|
|
для: Trianon
(08.11.2009 в 07:59)
| | Я возможно неправильно выразился. По безопасности и правда нет нареканий.
Есть только баги с юзабельностью. По стандарту e-mail не допускается использование символов с кодом более 127 в заголовках и теле письма. Их предварительно нужно кодировать, например методов base64, он самый популярный. Иначе некоторые почтовики могут не понять кодировки и показать "кашу" получателю. | |
|
|
|
|
|
|
|
для: asptema
(08.11.2009 в 12:13)
| | После размещения на сервере моего кода получаю письмо с читаемым текстом:Фамилия, имя, отчество Николаев Николай Николаевич
Телефон (057) 077-50-60
Электронная почта vax@mail.ru
Адрес доставки 61121, Харьков, ул. Сумская, 4, офис 16
А заказчику приходит нечто в этом виде:тЮЛХКХЪ, ХЛЪ, НРВЕЯРБН бЮУПЮЛЕЕБ нКЕЦ
рЕКЕТНМ 8 093 67 740 93
щКЕЙРПНММЮЪ ОНВРЮ vax@mail.ru
юДПЕЯ ДНЯРЮБЙХ СК. кШЯЮЪ, 21
Как бы мне сделать так, чтобы и заказчику приходило письмо с читаемым текстом? | |
|
|
|
|
|
|
|
для: Annette
(09.11.2009 в 22:17)
| | я ведь написал выше, что тело письма НЕОБХОДИМО кодировать!
лучше всего методом base_64, так как он самый распространенный.
стучись в асю 491410555, подскажу в оперативном порядке как и что сделать
----------------
а если лень, то скачай скрипт phpmailer:
phpmailer.sourceforge.net
и используй его на здоровье | |
|
|
|