Автор Тема: MAIL форма  (Прочитано 4869 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Wizard7b

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MAIL форма
« : 26 Ноября 2006, 02:42:09 »
Всем здрасте! Я в php полный чайник! Помогите ПЛИЗ! Сил моих больше нет!

Вот в чем дело!

У меня есть страница ГОСТЕВАЯ  с которой посетитель отпраляет письмо мне на мыло. Обрабатывается все формой php.

вот что то типо этого :

http://www.westland.ru

Я хочу чтобы уведомление об отправке выскакивало на той же странице где находиться форма, в нужном мне месте.

Вот что я сделал -  в страницу вложил слудующую строку :

 

Ура все заработало! :-(

Но вот проблема! при открытии страницы форма автоматически генерирует письмо и отправляет эго.

Я месяц писал скриптик, размером с мое сообщение! НУ НЕ ПОНИМАЮ Я КАК ЭТО ВСЕ ДЕЛАТЬ! Помогите!

Может как то проще все как то можно сделать.

Оффлайн brainkiller

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 527
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MAIL форма
« Ответ #1 : 26 Ноября 2006, 04:41:57 »
Скорее всего, нужно просто проверять переменные, передаваемые скрипту из формы - и если они пусты, код не выполнять.

А вообще, код в студию! У нас штатный телепат в отпуске. :)

Оффлайн Wizard7b

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MAIL форма
« Ответ #2 : 26 Ноября 2006, 15:10:09 »
Да код :


error_reporting(0);



$to = "$maill";

$subj = "Вопросы - Ответы";

$mess =
"
\\n Ваши имя и отчество : $fio

 \\n

\\n E-mail адрес : $email

 \\n

\\n Город : $city

 \\n

\\n Сообщение :

$text

 \\n
";

$ip = getenv("REMOTE_ADDR");

$usa = getenv("HTTP_USER_AGENT");

$temp = "
\\n Вам был отправлен Отзыв :

 \\n
\\n $mess

 \\n
\\n IP-адрес отправителя : $ip
 \\n
\\n nuser-agent: $usa \\n";

$body = $temp;



  $headers = "MIME-Version: 1.0\\n";

  $headers = "From: $fio <$email>\\n".
             "Reply-To: $fio <$email>\\n";

  $headers .= "Content-Type: text/html; charset=windows-1251\\n".
              "Content-Transfer-Encoding: 8bit\\n";



 $send = mail($to, $subj, $body, $headers) ;

  if($send == 1)
  {
  // Thanks message
  echo  ("$fio $ok");
  // Please leave the copyright
  }
  else
  // Error message
  echo (" $fio $no ");


?>




Я ее вставляю в страницу, и она автоматически срабатывает. Как мне ей сказать чтобы она не выполнялась до тех пор пока к ней не обратиться форма!?

Оффлайн Wizard7b

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MAIL форма
« Ответ #3 : 26 Ноября 2006, 15:51:49 »
Вот как я ща попробовал сделать :


error_reporting(0);


$to = "$maill";

$subj = "Вопросы - Ответы";

$mess =
"
\\n Ваши имя и отчество : $fio

 \\n

\\n E-mail адрес : $email

 \\n

\\n Город : $city

 \\n

\\n Сообщение :

$text

 \\n
";

$ip = getenv("REMOTE_ADDR");

$usa = getenv("HTTP_USER_AGENT");

$temp = "
\\n Вам был отправлен Отзыв :

 \\n
\\n $mess

 \\n
\\n IP-адрес отправителя : $ip
 \\n
\\n nuser-agent: $usa \\n";

$body = $temp;



  $headers = "MIME-Version: 1.0\\n";

  $headers = "From: $fio <$email>\\n".
             "Reply-To: $fio <$email>\\n";

  $headers .= "Content-Type: text/html; charset=windows-1251\\n".
              "Content-Transfer-Encoding: 8bit\\n";

if (empty($submit)) {}

else
{

 $send = mail($to, $subj, $body, $headers) ;

  if($send == 1)
  {
  // Thanks message
  echo  ("$fio $ok");
  // Please leave the copyright
  }
  else
  {
  // Error message
  echo (" $fio $no ");
  }
}
?>

Вроде как работает!

Посмотрите правлино?? Есть ли какие замечания?!

Оффлайн brainkiller

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 527
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MAIL форма
« Ответ #4 : 26 Ноября 2006, 16:17:49 »
if (@$_POST[\'submit\']!=false)
{
// собираем и отправляем письмо, сообщаем об отправке
}
else
{
// выводим форму
}

Еще замечание: обязательно проверяйте $fio и $email, иначе вам такого в headers впихнут, что мало не покажется. Подробнее про email injection.

Оффлайн Wizard7b

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MAIL форма
« Ответ #5 : 26 Ноября 2006, 16:35:28 »
Большое спасибо! Имя и email я проверяю при помощи javascript

Оффлайн brainkiller

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 527
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MAIL форма
« Ответ #6 : 26 Ноября 2006, 20:29:57 »
Это хорошо для того, кто случайно ошибется при вводе - своеобразная "защита от дурака". Но если захотят взломать, не станут пользоваться клиентскими скриптами с родной страницы. Проверяйте еще и на стороне сервера!

Оффлайн Wizard7b

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MAIL форма
« Ответ #7 : 26 Ноября 2006, 21:58:46 »
Да! как то не подумал!!! Еще раз спасибо!

А какой смысл вламовать то?! для чего!

Оффлайн brainkiller

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 527
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MAIL форма
« Ответ #8 : 27 Ноября 2006, 00:53:33 »
Видимо, по ссылке лень было пройти? :)

В общем, суть проблемы в том, что путем подмены заголовков через незащищенный скрипт можно рассылать спам.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28