ПЕРЕКУСИМ ПЕРЛОВКОЙ? DemiurG (arkhangel@mail.ru) Спецвыпуск Xakep, номер #033, стр. 033-062-3 $sth = $dbh->prepare (qq {select name from traffik where ip='$ip' order by ip desc}) or die; $sth->execute; $name=$sth->fetchrow_array(); print "<div align=right><b><font color=red>[пользователь $name в системе]</font></div>"; А проверка на админа в самом начале: "if ($name ne "admin")...", хотя это и так понятно в принципе. Бацая скрипт, я использовал модули: CGI (входит в поставку Perl) - позволяет обращаться к интерфейсу CGI. Через CGI мы получаем ip пользователя: my $ip=$ENV{REMOTE_ADDR}; через который уже узнаем его имя. CGI::Carp - выводит сообщение об ошибке прямо в экран браузера. Очень удобно для отладки. http://search.cpan.org/CPAN/authors/id/L/LD/LDS/CGI.pm-2.97.tar.gz DBI - интерфейс для работы с базой, может еще потребоваться DBD::MySQL. http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.37.tar.gz http://search.cpan.org/CPAN/authors/id/R/RU/RUDY/DBD-mysql-2.9002.tar.gz Tie::IxHash (http://search.cpan.org/CPAN/authors/id/G/GS/GSAR/Tie-IxHash-1.21.tar.gz) сортирует ключи хэша (это требуется при выводе месяцев, так как они представляют собой хэш и требуется, чтобы февраль шел после января, ну и т.д.): tie %month, "Tie::IxHash"; %month=('январь'=>"01", 'февраль'=>"02", 'март'=>"03", 'апрель'=>"04", 'май'=>"05", 'июнь'=>"06", 'июль'=>'07', 'август'=>'08', 'сентябрь'=>'09', 'октябрь'=>'10', 'ноябрь'=>'11', 'декабрь'=>'12' ); Скачать все можно с http://search.cpan.org/. Установка стандартная: perl Makefile.PL ; make make test make install Для того чтобы создать таблицу (с уже заполненными данными), я использовал такой нехитрый цикл. while (@ary = $sth->fetchrow_array()) { print "<TR>\n"; print ("<TD>", shift (@ary)) while @ary; print "</TR>\n"; } В массиве @ary уже есть данные, полученные отсюда: $sth = $dbh->prepare (qq {select date, mb from traffik where name='$name' and date like '$year-$month-%'}) or die; $sth->execute(); $ary=$sth->fetchrow_array(); Теперь ты все понял: с помощью скрипта ipastat.pl (а точнее - команды "ipastat -x -R . -n") мы обрабатываем вывод IPA, в результате чего создается (или обновляется) таблица traffik в базе traff2. Юзер заходит на веб-сервер, и благодаря инструкции "my $ip=$ENV{REMOTE_ADDR};" мы узнаем его ip -> ищем последнюю запись в базе по этому ip -> находим -> получаем его имя - и уже делаем выборку по его имени. Если сеть более глобальная и небезопасная, можно к апачу (на котором крутится mysql.cgi) прикрепить аутентификацию, но это уже твое личное дело. |