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

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

# Последующие шесть строчек удаляют лишние пробелы и символы перевода
# строки из переменных конфигурации, которые могут появиться в случае,
# если редактор переносит строки после некоторой длины строки или если
# были использованы пробелы между именами полей или переменными среды.
$Config{'required'} = – s/ (\s+|\n)?,(\s+|\n)?/,/g;
$Config{'required'} = – s/ (\s+)?\n+ (\s+)?//g;
$Config{'env_report'} = – s/ (\s+ | \n)?, (\s+ | \n)?/, /g;
$Config{'env_repO3rt'} = – <strong>s/</strong> (\s+) <strong>?\n+ (\s-i-)</strong>? <strong>//g;</strong>
$Config{'print_config'} = – s/ (\s+| \n)?, (\s+| \n)?/, /g;
$Config{'print_config'} = – s/ (\s+)?\n+ (\s+)?,
# Разложить переменные конфигурации по отдельным именам полей.
@Reguired = split (/, /, $Conf ig{ 'required'});
@Env_Report = split (/, /, $Conf ig{'env_report'});
@Print_Config = split (/,/, $Conf ig{'print_conf ig'}); }
sub check_required {
# Локализация переменных, используемых в этой подпрограмме.
local ($require, @error);
if (!$Config{ 'recipient '}) {
if (!defined (%Form)) { &error (bad_referer') } else { kerror ('no_recipient') }
# Для каждого обязательного поля, определенного в форме:
foreach $require (@Required) {
# Если обязательное поле является email, проверить синтаксис email
# адреса, чтобы убедиться в его правильности.
if ($require eq 'email' &&!&check_email ($Conf ig{$require})) { /push (©error, $require);
}
# Иначе, если обязательное поле является полем конфигурации и не
# указано его значение или заполнено пробелами, выдать ошибку.
els if (def ined($Config{$require})) { if (!$Config{$require)) { push (@error, $require);
# Если обычное поле формы не заполнено или заполнено пробелами,
# отметить его как ошибочное поле.
els if (!$Form{$require}) {
push(@error,$require);
# Если найдено хотя бы одно ошибочное поле, послать пользователю
# сообщение об ошибке.
if (@error) { &error('missing_fields',@error) }
sub return_html {
# Инициализировать локальные переменные,
# используемые этой подпрограммой.
local ($key, $sort_order, $sorted_field);
# Если используется опция переадресации, напечатать заголовок
# с адресом переадресации.
if ($Config{'redirect'}> {
print "Location: $Config{'redirect'} \n\n";
# Иначе, начать печать страницу ответа.
else {
# Напечатать заголовок HTTP и открывающие дескрипторы HTTP.,
print "Content – type: text/html \n\n";
print "<html>\n <head>\n";
# Напечатать заголовок страницы
if ($Config{'title'}) { print " <title>$Conf ig{'title'}</title>\n" }
else { print " <title>Cnacибо</title>\n" } print " </head>\n
<body>;
# Получить атрибуты дескриптора Body &body_attributes;
# Закрыть дескриптор Body print ">\n <center>\n";
# Напечатать специальный или общий заголовок.
if ($Config{'title'}) { print " <hl>$Conf ig{'title'}</hl>\n" }
else { print " <h1>Спасибо Вам за заполнение данной формы</h1>\n" }
print "</center>\n";
print "Ниже находится предоставленная вами информация для ";
print "$Conf ig{'recipient'}. Текущая дата: ";
print "$date<pxhr size=l width=75\%><p>\n";
# Если указано, отсортировать по алфавиту:
if ($Config{'sort'} eq 'alphabetic') { foreach $ field (sort keys %Form) {
# Если поле имеет значение или установлена опция печати пустых
# полей, то распечатать поле формы и его значение.
if ($Config{'print_blank_f ields'} ||?Form{$field}) {
print "<b>$field:</b> $Form{$field}<p>\n";
# Если указан порядок сортировки, отсортировать поля
# формы в указанном порядке.
elsif ($Config{'sort'} =~ /Border:.*,.*/) {
# Присвоить временной переменной $sort_order порядок сортировки,
# убрать лишние переносы строк и пробелы, убрать команду order:
# и разложить поля сортировки в массив.
$sort_order = $Config{'sort'};
$sort_order =~ s/(\s+|\n)?, (\s+| \n)?/, /g;
$sort_order =~ s/ (\s+)?\n+(\s+)?//g;
$sort_order =~ s/order://;
@sorted_f ields = split (/,/, $sort_order);
# Для каждого поля сортировки, если у него есть значение
# или если установлена опция печати пустых полей,
# распечатать поле формы и его значение .foreach $sorted_f ield (@sorted_f ields) {
if ($Config{'print_blank_f ields'} || $Form{$sorted_field))
{
print "<b>$sorted_field:</b> $Form{$sorted_field}<p>\n";
# Иначе, использовать порядок, в котором поля были переданы.
else {
# Для каждого поля формы, если оно имеет значение или
# установлена опция печати пустых полей, распечатать поле
# формы и его значение .foreach $ field (@Field_Order) {
if ($Config{'print_blank_f ields'} | | $Form{$f ield}) {
print "<b>$field:</b>' $Form{$f ield}<p>\n";
}
print "<p><hr size=l width=75%xp>\n";
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.