Иллюстрированный самоучитель по Linux

Построение Web-сайта

# Проверить наличие ссылки возврата и распечатать ее, если нашли.
if ($Config{'return_link_url'} && $Conf ig{'return_link_title'}) {
print "<ul>\n";
print "<lixa href =\"$Conflg{'return_link_url'} \">$Conf ig{'return_
 › link_title'}</a>\n";
print "</ul>\n";
# Распечатать нижнюю часть страницы.
print "(END HTML FOOTER)";
<hr size=l width=75%xp>
<centerxfont size=-lxahref="http: //www.worldwidemart.com/scripts,
 › formmail.shtml">FormMail</a> V1. 6 &copy;
1995-1997 Matt Wright <br> A Free Product of
<a href="http: //www.worldwidemart.com/scripts/">Matt ' s
 › Script Archive, Inc.</ax/fontx/center>
</body>
</html>
(END HTML FOOTER)
sub send_mail {
# Локализация переменных, используемых в этой подпрограмме.
local ($print_conf.ig, $key, $sort_order, $sorted_field, $env_report);
# Открыть почтовую программу open (MAIL, " | $mailprog – t");
– print MAIL "To: $Config{'recipient'}\n";
print MAIL "From: $Conf ig{'email'} ($Config{'realname'}) \n";
# Проверить тему сообщения
if ($Conf ig{ ' subject '}) { print MAIL "Subject:
$Config{'subject'} \n\n"} else {print MAIL "Subject: WWW Form Submission\n\n" }
print MAIL "Ниже находится предоставленная вами информация.
От кого: \n"; print MAIL "$Conf ig{'realname'} ($Conf ig{'email'}), дата:
$date\n"; print MAIL "-" x 75. "\n\n";
if (@Print_Config) " {
foreach $print_conf ig (@Print_Conf ig) { if ($Conf ig{$print_conf ig}) {
print MAIL "$print_config: $Config{$print_conf ig} \n\n";
} } }
# Если указано, отсортировать по алфавиту:
if ($Config{'sort'} eq 'alphabetic') { foreach $field (sort keys %Form) {
# Если поле имеет значение или установлена опция печати пустых
# полей, распечатать поле формы и его значение,
if ($Config{'print_blank_fields'} | | $Form{$field) $Form{$field} eq '0') {
print MAIL "$field: $Form{$field}\n\n"; } } }
# Если указан порядок сортировки, отсортировать поля
# формы в указанном порядке.
elsif ($Config{'sort'} = ~ /^order:.*,.*/) {
# Убрать лишние переносы строк и пробелы, убрать команду order:
# и разложить поля сортировки в массив.
$Config{'sort'} =~ s/(\s+|\n)?, (\s+ | \n)?/, /g;
$Config{'sort'} =~ s/ (\s+)?\n+ (\s+)?//g;
$Config{'sort'} = – s/order://;
@sorted_fields = split(/,/, $Config{'sort'});
# Для каждого поля сортировки, если у него есть значение или еслк
# установлена опция печати пустых полей, распечатать поле
# формы и его значение.
foreach $sorted_field (Ssorted_fields) {
if ($Config{ 'print_blank_f ields'} | | $Form{$sorted_field} | | $Form{$sorted_f ield} eq '0') {
print MAIL "$sorted_field: $Form{$sorted_f ield}\n\n";
# Иначе, использовать порядок, в котором поля были переданы, else {
# Для каждого поля формы, если оно имеет значение или
# установлена опция печати пустых полей, распечатать
# поле формы и его значение, foreach $field (@Field_Order) {
if ($Config{'print_blank_fields'} | | $Form{$field} | | $Form{$field} eq '0') {
print MAIL "$field: $Form{$field}\n\n";
}
}
}
print MAIL "-" x 75. "\n\n";
# Если указаны переменные среды, послать их адресату,
foreach $env_report (@Env_Report) {
if ($ENV{$env_report}) {
print MAIL "$env_report: $ENV{$env_report}\n";
} } close (MAIL);
}
sub check_email {
# Инициализация локальной переменной email
# параметром вызова подпрограммы.
$email = $_[0];
# Если e-mail адрес содержит:
if ($email = – /(@.*@)|(\.\.)|(@\.) (\.@)|(^\.)/ ||
# e-mail адрес имеет неправильный синтакс. Или, если синтакс не
# соответствует следующему шаблону регулярного выражения, то
# проверка основного синтаксиса обнаруживает ошибку.
$email!~ /^.+\@(\[?)[a-zA-Z0-9\-\.3+\.([a-zA-Z] – >{2.3}|[0-9]{1.3})(\]?)$/) {
# Основной синтаксис требует: один или более символов перед
# знаком @, за которым следует необязательный символ '[',
# затем любое число букв, цифр, дефисов и точек
# (допустимые символы домена/IP), и в конце стоит точка,
# за которой находятся 2 или 3 буквы (для суффиксов домена)
# или от 1 до 3 цифр (для IP-адресов). В конце также может
# стоять символ ' ] ', так как допустимо иметь email-адрес,
# подобный user@[255.255.255].
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.