Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - pirojok

Страницы: [1]
1
Добрый день.

есть самописный скрипт фотогаллереи работающий с MySQL.

Он имеет следующию структуру:

главный файл
                       модули

В отдельные файлы, модули вынесены подпрограммы работы с БД, с сессиями, загрузка файлов и т.д.
Насколько мне извесно при работе с БД, очень много времени тратиться на установку соединения.

my $dbh 
DBI->connect($dsn$db_user_name$db_password)|| die "Error while conecting to DB: $DBI::errstr()";


Вопрос в следующем:
в большинстве подключаемых модулей я соединяюсь с БД. Я попробовал использовать соединение которое осуществляеться в главном файле для всех модулей.
Сделал я это  следующим образом:
В модуле создал ссылку на $dbh
[/phpl]
$dbh_ref=\\$dbh
[/code]

а главном файле сделал вот так


my $dsn 
= \'DBI:mysql:xxxxxxxxxxx.ru\';
my $dbh = DBI->connect($dsn, $db_user_name, $db_password)|| die "Error while conecting to DB: $DBI::errstr()";
$$dbh_ref=$dbh;



В модуле который работает с сессиями это походу не прокатывает(выдаёт ошибку). В остальном прекрасно работает.
[code=perl]
Can\'t connect to data source , no database driver specified and DBI_DSN env var not set at /usr/local/lib/perl5/site_perl/5.8.8/CGI/Session/Driver/DBI.pm line 23
[/php]

Вот пример как всу устроено в модуле сессий:

package security
#Íàçâàíèå ïàêåòà è êëàññà

########################################################
#Êëàññ
########################################################

use Exporter;
@
ISA=(\'Exporter\');
@EXPORT=qw(&ses $dbh_ref);
use CGI::Session;
#use DBI;
use CGI qw(:all);
use CGI::Carp qw(fatalsToBrowser);
use expiresessions;
use error_log;
########################################################
$CGI::Session::MySQL::TABLE_NAME = \'kr_sessions\';
my $cgi = new CGI;
$dbh_ref=\\$dbh;


my $sql="SELECT * FROM kr_users WHERE id=$user_id";
                  my $sql_request=$dbh->prepare(qq[$sql]);
                  $sql_request->execute || error_log("Error while to execute the SQL comand <b>$sql</b>: $DBI::errstr()");
                  %OUT=%{$sql_request->fetchrow_hashref};


В чём может быть причина ошибки? вообще так можно делать?

И ещё вопрос если в главном файле подключены модули типо:
#!/usr/bin/perl
use CGI qw(:all);
use CGI::Carp qw(fatalsToBrowser);
use File::Path;
use DBI;
use Time::HiRes qw(time);

Надо ли эти же модули поключать в своих(самописных)?
В примере предоставленном выше, строка use DBI закоментирована, но модуль всё равно хорошо работает с Mysql.

2
Perl / NET::FTP и upload
« : 08 Декабря 2005, 02:59:06 »
Хочу организовать upload файлов на сервер через NET::FTP, только не пойму как заставить его заливать файлы...
А делаю собствено вот так:

Код:   
#!/usr/bin/perl
use CGI qw(:all);
use CGI::Carp qw(fatalsToBrowser);
use Net::FTP;
$ftp = Net::FTP->new("fatal.ru") or die "Can\'t connect: $@\\n";
$ftp->login(\'пароль\', \'логин\') or die "Couldn\'t login\\n";
$ftp->cwd(/site) or die "Couldn\'t change directory\\n";
$ftp->put(param(filename) or die "Couldn\'t put $filename\\n";
print header;
print \'good!\';
exit;   


$ftp->put(param(filename) or die "Couldn\'t put $filename\\n"; в этой строчке на протык, выдаёт ошибку Couldn\'t put!!!
Подскажите как правильно..., и какие тут есть подводные камни?

3
#!/usr/bin/perl
use CGI;
$query = new CGI;
# Код для формы
print $query->header;
print $query->start_multipart_form(-method=>\'get\', -action=>\'upl.pl\');
print $query->filefield(-name=>\'uploaded_file\');
print $query->submit(\'button_name\',\'value\');

if ($query->param(\'uploaded_file\') ne \'\'){&insert_image;}
sub insert_image
{
print "Сработало!!!";
$filename = $query->param(\'uploaded_file\');
@fname = split(/\\\\/,$filename);
$kk = @fname;
$filename = $fname[$kk-1];
chop($filename);
$fh = $query->upload(\'uploaded_file\');
open (F,">$filename") || die "Ошибка при открытии $filename";
binmode(F);
while (<$fh>)
{
print F $_;
}
close(F);
}

4
хочу при помощи SSI() вывести содержимое файла news.db из папки cgi-bin в html файл ,но не получаеться из-за того что сервер интерпритирует файл  как скрипт!!!
Подскажите как выполнить задуманное???Пожалуйста!!!

Страницы: [1]