<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Отправка письма</title> <meta content="text/html;charset=windows-1251" http-equiv="Content-Type"> </head> <body>Далее идет 2 логические части:
<? $mailto="name@server.ru"; if (empty($ok)) { ?>Далее идет вывод формы, если выполнено предыдущее условие if (empty($ok)).
<h3>Отправьте вопрос автору сайта</h3> Поля, отмеченные (*), обязательны для заполнения. <br><br> <form action="<?echo $PHP_SELF;?>" method="post"> <table> <tr> <td>Ваше имя:</td> <td> <input type="text" name="username" size="30" maxlength="20"></td> </tr> <tr> <td>* E-mail:</td> <td><input type="text" name="mailfrom" size="30" maxlength="50"></td> </tr> <tr> <td>* Вопрос:</td> <td><textarea cols="50" rows="10" name="question"></textarea></td> </tr> </table> <input type="submit" name="ok" value="отправить"> </form>В противном случае, т.е. если была нажата кнопка, идет обработка формы и отправка письма
<? } else {Далее идет проверка на корректность заполнения поля "E-mail". Любители ругулярных выражений эту проверку поймут. Для остальных немного поясню:
if(!preg_match("/^([a-z,0-9])+@([a-z,0-9])+(.([a-z,0-9])+)+$/", $mailfrom)) { $error = "Не верно заполнено поле: <b>E-mail</b><br>"; }Если поле "Вопрос" не заполнили, то к переменно $error добавляем еше одно ругательство:
if (empty($question)) { $error .= "Не заполнено поле: <b>Ваш вопрос</b><br> "; }Если переменная $error не пустая, то мы ее выводим на экран и немедленно прекращаем дальнейшую обработку с помощью exit
if ($error) { echo $error; echo "<br><a href=\"javascript:history.go(-1)\"Ну а если таки $error осталась пустой и exit не сработал, то можно приступать к отправке письма, т.е. главной цели всего этого мероприятия...
class=\"text\">Вернуться назад</a>"; exit; }
$subject="Вопрос от $mailfrom"; $body="Имя: $username E-mail: $mailfromА теперь самое главное, чтоб потом можно было прочитать письмо "по-русски" :) Функция convert_cyr_string перекодирует строку из win в koi (w-win, k-koi) Это необходимо, т.к. все почтовые клиенты по дефалту принимают письма в koi. А у нас вверху страницы стоит charset=windows-1251, поэтому функция грамотно переводит из win в koi Затем с помощью функции mail отправляется письмо на $mailto, указанный в начале файла.
Комментарии: $question";
$body=convert_cyr_string (stripslashes($body),w,k); $subject=convert_cyr_string (stripslashes($subject),w,k); $sucess = mail($mailto, $subject, $body,Ну и самое приятное... Если письмо успешно отправлено, то выводим благодарственную надпись и предлагаем вернуться..
"From: $email X-Mailer: PHP/" . phpversion());
if ($sucess) { echo "Спасибо. Ваш вопрос отправлен.<br><br>"; echo "<a href=\"javascript:history.go(-1)\"Стандартный конец..
class=\"text\">Вернуться назад</a>"; }
} ?> </body> </html>P.S. Как наверно понял читатель, нужно выделить и скопировать все зеленые блоки в один файл по порядку и запустить его на сервере
dina
08.06.2001