Вывести пользовательские данные в браузере несложно, но вряд ли это можно назвать содержательной обработкой пользовательского ввода. Один из способов обработки информации заключается в ее отправке по электронной почте - например, администратору сайта. Хотя при помощи гиперссылки mailto: можно отправить сообщение прямо из браузера, следует учитывать, что внешние приложения электронной почты настроены не на каждом компьютере. Следовательно, отправка сообщений с web-формы более надежно гарантирует, что сообщение будет доставлено адресату.
В следующем разделе, mail( ), создается небольшая форма, в которой пользователь вводит информацию и комментарии по поводу сайта. Затем данные форматируются соответствующим образом и передаются стандартной функции РНР mail( ). Но прежде чем переходить к построению формы, необходимо предварительно рассмотреть синтаксис функции mail( ).
mail ( )
Функция mail( ) отправляет сообщение заданному адресату по электронной почте. Синтаксис функции mail( ):
boolean mail (string получатель, string тема, string сообщение [, string доп_заголовки])
В параметре тема, как нетрудно предположить, передается тема сообщения. Параметр сообщение содержит текст сообщения, а необязательный параметр доп_за головки предназначен для включения дополнительной информации (например, атрибутов форматирования HTML), пересылаемой с сообщением.
В системе UNIX функция mail( ) использует утилиту sendmail. В Windows эта функция работает лишь при наличии установленного почтового сервера или если функция mail( ) связана с работающим сервером SMTP. Эта задача решается модификацией переменной SMTP в файле php.ini.
Если вы сделали все необходимое и функция mail( ) работает в вашей системе, попробуйте выполнить следующий фрагмент (конечно, адрес youraddress@yourserver.com заменяется вашим настоящим адресом электронной почты):
$email = "youraddress@yourserver.com";
$subject = "This is the subject";
$message = "This is the message";
$headers = "From: somebody@somesite.com";
mail ($email, $subject, $message, $headers);
Хотя при обширной переписке, конечно, следует использовать специализированные почтовые программы вроде majordomo (http://www.greatcircle.com/majordomo), в простых случаях функции РНР mail( ) оказывается вполне достаточно.
Итак, после знакомства с функцией mail( ) можно применить ее на практике. В листинге 10.5 показано, как получить информацию от пользователя и отправить ее по адресу, заданному администратором сценария.
Листинг 10.5. Пересылка пользовательских данных функцией mail( )
<html> <head> <title>Listing 10-5</title> </head> <body bgcolor="#ffffff" text="#000000" link="#cbda74" vlink="#808040" alink="#808040"> // Все кавычки внутри $form должны экранироваться. // в противном случае произойдет ошибка. $form = " <form action="listing10-5.php" method="post"> <input type="hidden" name="seenform" value="y"> <b>Send us your comments!</b><br> Your Name:<br> <input type="text" name="name" size="20" maxlength="20" value=""><br> Your Email:<br> <input type="text" name-"email" size="20" maxlength="40" value=""><br> Your Comments:<br> <textarea name="comments" rows="3" cols="30"></textarea><br> <input type="submit" value="submit!"> </form> // Если форма ранее не отображалась, отобразить ее. // Для проверки используется значение скрытой переменной $seenform. if ($seenform != "у") : print "$form"; else : // Переменная $recipient определяет получателя данных формы $recipient = "yourname@youremail.com"; // Тема сообщения $subject = "User Comments ($name)"; // Дополнительные заголовки $headers = "From: $email"; // Отправить сообщение или выдать сообщение об ошибке mail($recipient, $subject, $comments, $headers) or die("Could not send email!"); // Вывести сообщение для пользователя print "Thank you $name for taking a moment to send us your comments!"; endif; ?> </body> </html>
Неплохо, правда? Листинг 10.5 работает так же, как листинг 10.4; сначала мы проверяем, отображалась ли форма ранее. Если это происходило, программа вызывает функцию mail( ) и пользовательские данные отправляются по адресу, определяемому переменной $recipient. Затем в браузере выводится благодарственное сообщение для пользователя.
Простейшим расширением этого примера будет отправка благодарственного сообщения по электронной почте (вторым вызовом mail( )). Следующий пример развивает эту идею - пользователю предлагается на выбор несколько бюллетеней. Выбранные бюллетени отправляются по электронной почте.
|