Платформы корпоративных информационных систем

         

Устойчивое запоминание состояния



Пример 9-5. Устойчивое запоминание состояния

#!/usr/bin/perl -w

use CGI;

umask 0;

open(F,"/usr/dict/words") or die("He могу открыть! $!");

chdir("users") or die("He могу перейти в каталог $!");

# Это каталог, где будут храниться все данные

# о пользователе.

Soutput = new CGI;



if (not$output->param) {

print $output->header,
$output->start_html('Мой словарь');

print «HTML;

<FORM ACTION="read2.cgi" METHOD=POST>

<р>Введите свое имя пользователя:

<INPUT NAME="username" SIZE=30>

<P>

</formx/body></html> HTML

exit(0); }

$user = $output->param('username');

## Если файла пользователя нет, создать его и установить
## начальное значение в '0',
if ( not -e "$user" ) {

open (U, ">$user") or die("He могу открыть! $!");

print U "0\n";

close U;

&print_range('0');

## если пользователь существует и в URL не задано

## начальное значение, прочесть последнее значение и начать с него.

} elsif ( not $output->param('start') ) {

open(U,"Suser") or die("He могу открыть пользователя! $!");

$start = <U>; close U;

chomp $starl;

uprint range($start);

## Если пользователь существует и в URL не указано
## начальное значение, записать начальное значение
## в файл пользователя и начать вывод.
} else{

open(U,">$user") or die("He могу открыть пользователя для записи! $!");

print U $output->param('start'), "\n";

close U;

&print_range($output->param('start1)); }

sub print_range {

my $start = shift;

my $count = 0;

my $line = " "

print $output->header,
$output->start_html(' Мой словарь ');

print "<pre>\n";

while (($count < $start) and ($line = <F>)) { $count++; }

while (($count < $start+10) and ($line = <F>) )

{
print $line; $count++;
}
my $newnext = $start+10;
my $newprev = $start-10;
print "</pre><p>";
unless (Sstart == 0)
{

print

qq%<a href="read2.cgi?start=$newprev&username=$user">
Previous</a>%;
}

unless (eof) { print qq% <a href="read2.cgi?start=$newnext&username=$user">Next</a>%;

# Заметьте, что имя пользователя 'username' добавлено к URL.

# В противном случае CGI забудет, с каким пользователем имел дело.
}

print $output->end_html;
exit(0')

Содержание раздела