|
|
|
|
|
для: Zend72
(04.03.2009 в 07:43)
| | Странно только, что сперва код перевода строки прописали явно, а после этого идет его определение, что требует str_replace в последствии. Не лучше ли это делать до заголовков, и затем добавлять в них определенное?
PS. Да и сервер, это либо WIN либо UNIX, ну может в каких-то случаях MAC, в общем проще так:
$CR = substr(PHP_OS, 0, 3) = "WIN" ? "\r\n" : "\n"; | |
|
|
|
|
|
|
|
для: sim5
(04.03.2009 в 06:30)
| | Так вот оно что ;-)
Общий вид кодированного текста:
=?<code_page>?<encode_method>?<encode_text>?=
Где:
<code_page>::=KOI8-R | Windows-1251
- "коя" или "винды"
<encode_method>::=B | Q
- Base64 или QuotedPrint
<encode_text>
- кодированный текст
|
Ээм... А если так?
<?php
$name = $_POST["name"];
$phone = $_POST["phone"];
$gopa = $_POST["gopa"];
$quest = $_POST["quest"];
$ip = $_SERVER["REMOTE_ADDR"];
if (isset ($name))
{
$name = substr($name,0,20); //Не может быть более 20 символов
if (empty($name))
{
echo "<center><b>Не указано имя !!!<p>";
echo "<a href=faq.htm>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$name = "не указано";
}
$i = "не указано";
if ($name == $i AND $email == $i AND $mess == $i)
{
echo "Ошибка ! Скрипту не были переданы параметры !";
exit;
}
$to = "***@mail.ru";
$subject = "Вопрос с сайта";
$subject = "=?koi8-r?B?".base64_encode($subject)."?=\n";
// Формируем заголовки
$headers = "Reply-To: $to\r\n";
$headers .= "From: $to\r\n";
$headers .= "Return-Path: $to\r\n";
$headers .= "Content-Type: text/html; charset=koi8-r\r\n";
$headers .= "Content-Transfer-Encoding: 8bit\r\n";
$headers .= "MIME-Version: 1.0\r\n";
// Выясним что там с ОС
if (strtoupper(substr(PHP_OS, 0, 3)) == 'MAC')
$headers = str_replace("\r\n", "\r", $headers);
else if (strtoupper(substr(PHP_OS, 0, 3)) != 'WIN')
$headers = str_replace("\r\n", "\n", $headers);
// бла бла бла
$message = "Имя: $name . Телефон: $phone . Электронный адрес: $gopa . Вопрос: $quest . IP-адрес: $ip";
// Отправляем...
mail($to, $subject, $message, $headers) or print "Не могу отправить письмо !!!";
echo "<center><b>Спасибо.</a>";
echo "<a href=index.htm>На главную</a>";
exit();
?>
|
| |
|
|
|
|
|
|
|
для: Zend72
(04.03.2009 в 06:25)
| | Ну так намного лучше. :) Только нагляднее да и удобнее, определять заголовки вне аргументов функции, передавая их потом ей. К тому же \r\n, это под Win платформу, а значит лучше и это сперва определить, а уж затем...
PS. "=?koi8-r?B?" . base64_encode($subject) . "?="
и
"/r/n" ?? | |
|
|
|
|
|
|
|
для: sim5
(04.03.2009 в 05:55)
| | Так?
<?php
$name = $_POST["name"];
$phone = $_POST["phone"];
$gopa = $_POST["gopa"];
$quest = $_POST["quest"];
$ip = $_SERVER["REMOTE_ADDR"];
if (isset ($name))
{
$name = substr($name,0,20); //Не может быть более 20 символов
if (empty($name))
{
echo "<center><b>Не указано имя !!!<p>";
echo "<a href=faq.htm>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$name = "не указано";
}
$i = "не указано";
if ($name == $i AND $email == $i AND $mess == $i)
{
echo "Ошибка ! Скрипту не были переданы параметры !";
exit;
}
$to = "***@mail.ru";
$subject = "Вопрос с сайта";
$message = "Имя: $name . Телефон: $phone . Электронный адрес: $gopa . Вопрос: $quest . IP-адрес: $ip";
mail($to, "=?koi8-r?B?".base64_encode($subject)."/r/n", $message, "Content-Type: text/html; charset=koi8-r\r\n") or print "Не могу отправить письмо !!!";
echo "<center><b>Спасибо.</a>";
echo "<a href=index.htm>На главную</a>";
exit();
?>
|
| |
|
|
|
|
|
|
|
для: Zend72
(04.03.2009 в 05:50)
| | Нельзя отправлять так русский текст в теме, не кодируя его, респондент будет получать абракадабру. И указывать надо кодировку письма. | |
|
|
|
|
|
|
|
для: Русдюк
(03.03.2009 в 00:41)
| |
<?php
$name = $_POST["name"];
$phone = $_POST["phone"];
$gopa = $_POST["gopa"];
$quest = $_POST["quest"];
$ip = $_SERVER["REMOTE_ADDR"];
if (isset ($name))
{
$name = substr($name,0,20); //Не может быть более 20 символов
if (empty($name))
{
echo "<center><b>Не указано имя !!!<p>";
echo "<a href=faq.htm>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$name = "не указано";
}
$i = "не указано";
if ($name == $i AND $email == $i AND $mess == $i)
{
echo "Ошибка ! Скрипту не были переданы параметры !";
exit;
}
$to = "***@mail.ru";
$subject = "Вопрос с сайта";
$message = "Имя: $name . Телефон: $phone . Электронный адрес: $gopa . Вопрос: $quest . IP-адрес: $ip";
mail($to,$subject,$message) or print "Не могу отправить письмо !!!";
echo "<center><b>Спасибо.</a>";
echo "<a href=index.htm>На главную</a>";
exit();
?>
|
| |
|
|
|
|
|
|
| Здравствуйте.
У меня такая проблема с различиями php4 и php5. Одна форма у меня дублируется на двух сайтах.
На php4 все работает. Подскажите, пожалуйста, что нужно изменить, чтоб работало и на php5.
Не пинайте ногами, я не программист, сам код писал не я, просто нужно срочно доделать, вот и вливаюсь.
Вот сам код:
<?php
$mail = $_POST["quest"];
if (isset ($name))
{
$name = substr($name,0,20); //Не может быть более 20 символов
if (empty($name))
{
echo "<center><b>Не указано имя !!!<p>";
echo "<a href=faq.htm>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$name = "не указано";
}
$i = "не указано";
if ($name == $i AND $email == $i AND $mess == $i)
{
echo "Ошибка ! Скрипту не были переданы параметры !";
exit;
}
$to = "***@mail.ru";
$subject = "Вопрос с сайта";
$message = "Имя: $name . Телефон: $phone . Электронный адрес: $gopa . Вопрос: $quest . IP-адрес: $REMOTE_ADDR";
mail ($to,$subject,$message) or print "Не могу отправить письмо !!!";
echo "<center><b>Спасибо.</a>";
echo "<a href=index.htm>На главную</a>";
exit;
?>
Соответственно, еще есть страничка с формой.
На е-мейл приходит письмо, но оно не содержит того, что вписано в форму.
Заранее спасибо! | |
|
|
|
|