Forum Webscript.Ru
Программирование => PHP => Тема начата: Wizard7b от 26 Ноября 2006, 02:42:09
-
Всем здрасте! Я в php полный чайник! Помогите ПЛИЗ! Сил моих больше нет!
Вот в чем дело!
У меня есть страница ГОСТЕВАЯ с которой посетитель отпраляет письмо мне на мыло. Обрабатывается все формой php.
вот что то типо этого :
http://www.westland.ru
Я хочу чтобы уведомление об отправке выскакивало на той же странице где находиться форма, в нужном мне месте.
Вот что я сделал - в страницу вложил слудующую строку :
include("mail-forma.php"); ?>
Ура все заработало! :-(
Но вот проблема! при открытии страницы форма автоматически генерирует письмо и отправляет эго.
Я месяц писал скриптик, размером с мое сообщение! НУ НЕ ПОНИМАЮ Я КАК ЭТО ВСЕ ДЕЛАТЬ! Помогите!
Может как то проще все как то можно сделать.
-
Скорее всего, нужно просто проверять переменные, передаваемые скрипту из формы - и если они пусты, код не выполнять.
А вообще, код в студию! У нас штатный телепат в отпуске. :)
-
Да код :
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 ");
?>
Я ее вставляю в страницу, и она автоматически срабатывает. Как мне ей сказать чтобы она не выполнялась до тех пор пока к ней не обратиться форма!?
-
Вот как я ща попробовал сделать :
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 ");
}
}
?>
Вроде как работает!
Посмотрите правлино?? Есть ли какие замечания?!
-
if (@$_POST[\'submit\']!=false)
{
// собираем и отправляем письмо, сообщаем об отправке
}
else
{
// выводим форму
}
Еще замечание: обязательно проверяйте $fio и $email, иначе вам такого в headers впихнут, что мало не покажется. Подробнее про email injection. (http://www.securephpwiki.com/index.php/Email_Injection)
-
Большое спасибо! Имя и email я проверяю при помощи javascript
-
Это хорошо для того, кто случайно ошибется при вводе - своеобразная "защита от дурака". Но если захотят взломать, не станут пользоваться клиентскими скриптами с родной страницы. Проверяйте еще и на стороне сервера!
-
Да! как то не подумал!!! Еще раз спасибо!
А какой смысл вламовать то?! для чего!
-
Видимо, по ссылке лень было пройти? :)
В общем, суть проблемы в том, что путем подмены заголовков через незащищенный скрипт можно рассылать спам.