Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
#!/usr/bin/perl –w
#------------------------------------------ adsl-adduser.pl
use DBI;
use Apache::Session::Postgres;
$login = $ARGV[0]; # первый аргумент – имя
$password = $ARGV[1]; # второй – пароль
# Запрашиваем все, что не передано в аргументах
if(!$login) {
print 'Enter login: ';
chomp($login = <>);
}
if(!$password) {
print 'Enter password: ';
chomp($password = <>);
}
# Создаем новую сессию и сразу закрываем
$dbh = DBI->connect('dbi:Pg:dbname=adsl', 'adsluser', 'password');
tie %session, 'Apache::Session::Postgres', undef,
{Handle => $dbh, LockHandle => $dbh};
untie %session;
# В запись в таблице sessions, соответствующей нашему сеансу, добавляем имя пользователя и пароль, введенные выше
$pre = $dbh->prepare('
update sessions
set login = ?, password = ?
where login is null;
');
$pre->execute($login, $password);
$dbh->disconnect;
exit;
При желании этот модуль можно сделать CGI-скриптом и организовать доступ к нему через модуль администрирования, подключаемый к нашему приложению, как и все остальные.
Ну и раз информация сессий будет необходима нам в каждом модуле, то процедуры работы с ней вынесены в наш модуль My::Insite. Как все это будет работать – смотрите в листингах, приведенных в статье.
Взаимодействие с БД
Для работы с базой данных будем использовать Perl-модуль DBI с драйвером DBD::Pg. Данный модуль и нужный драйвер можно установить как из портов, так и из CPAN. Функции открытия и закрытия соединения вынесены в модуль My::Insite, остальное смотрите в коде конкретных модулей.