Итак, для начала создадим форму на HTML, в поля которой посетитель будет вводить данные. Для примера будем использовать 3 поля: Имя, E-mail и Сообщение.
Содержимое файла "index.html":
<html>
<body>
<form action= "post.php" method= "POST">
<p>Имя: </p>
<p> <input type= "text" name= "name"> </p>
<p>E-mail: </p>
<p> <input type= "text" name= "email"></p>
<p>Сообщение: </p>
<p> <textarea rows= "10" cols= "45" name= "message"></textarea></p>
<input type= "submit" value= "Отправить">
</body>
</html>
В этой простейшей HTML форме я использую метод передачи POST и передаю 3 параметра (name, email, message) PHP скрипту (post.php) лежащему в корне сайта после нажатия на кнопку «Отправить».
Полей для ввода может быть сколько угодно и с различными атрибутами. Названия параметров (name, email, text) используйте, какие вам удобно. Главное чтобы эти параметры были правильно обработаны скриптом (post.php). Вы можете использовать выпадающие списки (select), флажки для выбора (checkbox), переключатели (radio) и т.д. Здесь, к примеру, для ввода сообщения я использовал текстовое поле textarea с шириной в 45 символов и с высотой в 10 строк.
Теперь создадим файл post.php. Название и путь к файлу указываются в form action= "post.php" HTML формы.
Содержимое файла "post.php":
<?
// ----------------------------конфигурация-------------------------- //
$adminemail="admin@site.ru"; // e-mail админа
$date=date("d.m.y"); // число.месяц.год
$time=date("H:i"); // часы:минуты:секунды
$backurl="http://site.ru/index.html"; // На какую страничку переходит после отправки письма
//---------------------------------------------------------------------- //
// Принимаем данные с формы
$name=$_POST['name'];
$email=$_POST['email'];
$msg=$_POST['message'];
// Проверяем валидность e-mail
if (!preg_match("|^([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})|is",
strtolower($email)))
{
echo
"<center>Вернитесь <a
href='javascript:history.back(1)'><B>назад</B></a>. Вы
указали неверные данные!";
}
else
{
$msg="
<p>Имя: $name</p>
<p>E-mail: $email</p>
<p>Сообщение: $msg</p>
";
// Отправляем письмо админу
mail("$adminemail", "$date $time Сообщение
от $name", "$msg");
// Сохраняем в базу данных
$f = fopen("message.txt", "a+");
fwrite($f," \n $date $time Сообщение от $name");
fwrite($f,"\n $msg ");
fwrite($f,"\n ---------------");
fclose($f);
// Выводим сообщение пользователю
print "<script language='Javascript'><!--
function reload() {location = \"$backurl\"}; setTimeout('reload()', 6000);
//--></script>
$msg
<p>Сообщение отправлено! Подождите, сейчас вы будете перенаправлены на главную страницу...</p>";
exit;
}
?>
Давайте разберемся. В самом начале задается небольшая конфигурация скрипта. Это e-mail админа, формат даты и времени и страница куда будет
перенаправлен посетитель после отправки письма.
Далее идет объявление переменных которые скрипт принял методом POST. Все переменные, а так же их названия должны соответствовать HTML форме с которой они отправлены.
Затем проверяем корректность введенного E-mail. Эта функция хороша тем, что проверяет на валидность даже те названия адресов E-mail у которых в логине есть например точки. Т.к. такие адреса уже давно не редкость.
Если все ОК, то отправляем письмо админу.
Затем сохраняем сообщение в базе данных – это файл message.txt лежащий в корне сайта. Если его нет, то скрипт самостоятельно его создаст т.к. в функции fopen стоит атрибут "a+".
Далее пользователю выводится сообщение об удачной отправке письма и веденным им текстом. И через 6000 миллисекунд с помощью JavaScriptа он перенаправляется на страницу указанную в конфигурации (переменная $backurl).
Я надеюсь, что этот простенький пример или его отдельные части помогут вам для реализации небольших идей на сайте.
Автор: Антон Соломатин, г. Волгоград