Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Perl
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2012, 19:32   #1
Max1548
Пользователь
 
Регистрация: 28.05.2011
Сообщений: 99
Восклицание Perl - скрипт не видит переменные из пакета

Есть два файла: index.pl и config.pm
index.pl - в папке ../cgi-bin
config.pm - ../cgi-bin/lib
Содержимое файла index.pl:
Код:
#!/usr/bin/perl -w
use CGI::Carp qw(fatalsToBrowser);
use CGI qw( :standard);
use CGI::Session;
use DBI;
use strict;
push (@INC, '../cgi-bin/lib');
require "colontitles.pm";
require "config.pm";
отрезано
Код:
my $db = DBI->connect($config::ds, $config::dbuser, $config::dbpass) or die(CGI->errstr); #ошибка
Содержимое файла config.pm:
Код:
package config;
our $sesstmp = "../tmp";
our $ds = "DBI:mysql:speccod:localhost";
our $dbuser = 'root';
our $dbpass = '';
1;
index.pl выдает ошибку о подключении к БД, я менял
Код:
$config::ds
и прочие значения на
Код:
'DBI:mysql:speccod:localhost'
, все начинало работать!
Помогите, пожалуйста!
OS - [||-----------------------------------------------] забил, дойдя до драйвера памяти

Последний раз редактировалось Max1548; 11.02.2012 в 19:35. Причина: Опечатка
Max1548 вне форума Ответить с цитированием
Старый 14.02.2012, 11:57   #2
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Выложите весь код + выложите сообщение об ошибки.
ssdm вне форума Ответить с цитированием
Старый 14.02.2012, 16:10   #3
Max1548
Пользователь
 
Регистрация: 28.05.2011
Сообщений: 99
Сообщение

Цитата:
Сообщение от ssdm Посмотреть сообщение
Выложите весь код + выложите сообщение об ошибки.
Код:
#!/usr/bin/perl -w
use CGI::Carp qw(fatalsToBrowser);
use CGI qw( :standard);
use CGI::Session;
use DBI;
use strict;
push (@INC, '../cgi-bin/lib');
require "colontitles.pm";
require "config.pm";
#print "Content-type: text/html\n\n";
if (!defined(param('login')) && !defined(param('password'))) {
	if (!defined(param('SID'))) {
	print "Content-type: text/html\n\n";
	&colontitles::uppercolontitle("Вход", "main.css", "0");
	print <<Form;
	<form>Логин: <input type="text" name="login" /><br />Пароль: <input type="password"  name="password" /><input type="submit" value="Вход"></form>
Form
	exit;
	}
	else {
		my $SID;
		$SID = param('SID');
		my $sidcookie = cookie(-name=>'SID', -expires=>'+5d', -value=>$SID, -path=>'/'); #-domain=>'.speccod.tk',
		print "Set-Cookie: $sidcookie\n";
		if (cookie('SID') ne '') {
			$SID = ''
		}
		print "Location: index.pl?SID=$SID\n\n";
	}
}
my $login = param('login');
my $password = param('password');
my $db = DBI->connect($config::ds, $config::dbuser, $config::dbpass) or die(CGI->errstr); 
my $query = $db->prepare("SELECT uid FROM user WHERE login=\'$login\'");
$query->execute();
if (!$query->err){
	if ($query->rows == 1){
		my $sess = CGI::Session->new('driver:file', undef, {Directory=>$config::sesstmp}) or die(CGI->errstr);
		$sess->name('SID');
		my $sidcookie = cookie(-name=>'SID', -value=>$sess->id(), -path=>'/', -expires=>'+5d');
		print "Set-cookie: $sidcookie\n";
		$sess->param(-name=>'login', -value=>$login);
		my $uid;
		while (my @row = $query->fetchrow_array()){
			$uid = $row[0];
		}
		$sess->param(-name=>'uid', -value=>$uid);
		$sess->expire('+5d');
		$sess->flush();
		$query->finish();
		$db->disconnect;
		print "Location: http://speccod.tk/cgi-bin/index.pl?SID=" . $sess->id() . "\n\n"; #"&login=" . $login . "&uid=" . $uid . 
	}
	}
Ошибка:
Код:
Can't connect to data source , no database driver specified and DBI_DSN env var not set at S:/home/speccod.tk/cgi-bin/entry.pl line 33
OS - [||-----------------------------------------------] забил, дойдя до драйвера памяти
Max1548 вне форума Ответить с цитированием
Старый 15.02.2012, 13:04   #4
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

В общем так делать не стоит. Юзайте константы.
Код:
package config;
use strict;
use warnings;
use constant {
 sesstmp => "../tmp" ,
 ds => "DBI:mysql:speccod:localhost",
 dbuser => 'root'.
 dbpass => ''
}
1;
а в скрипте
Код:
my $db = DBI->connect(config::ds, config::dbuser, config::dbpass) or die(CGI->errstr);
Добавлено :
А ещё лучше использовать конфиг файлы )

Последний раз редактировалось ssdm; 15.02.2012 в 15:50. Причина: ADD
ssdm вне форума Ответить с цитированием
Старый 15.02.2012, 17:02   #5
Max1548
Пользователь
 
Регистрация: 28.05.2011
Сообщений: 99
Хорошо

Цитата:
Сообщение от ssdm Посмотреть сообщение
В общем так делать не стоит. Юзайте константы.
Код:
package config;
use strict;
use warnings;
use constant {
 sesstmp => "../tmp" ,
 ds => "DBI:mysql:speccod:localhost",
 dbuser => 'root'.
 dbpass => ''
}
1;
а в скрипте
Код:
my $db = DBI->connect(config::ds, config::dbuser, config::dbpass) or die(CGI->errstr);
Добавлено :
А ещё лучше использовать конфиг файлы )
Большое спасибо, сейчас же проверю!
OS - [||-----------------------------------------------] забил, дойдя до драйвера памяти
Max1548 вне форума Ответить с цитированием
Старый 24.02.2012, 22:22   #6
Max1548
Пользователь
 
Регистрация: 28.05.2011
Сообщений: 99
По умолчанию

Цитата:
Can't connect to data source config:s, no database driver specified and DBI_DSN env var not set at S:/home/speccod.tk/cgi-bin/entry.pl line 3
выпадает ошибка
OS - [||-----------------------------------------------] забил, дойдя до драйвера памяти
Max1548 вне форума Ответить с цитированием
Старый 02.03.2012, 15:13   #7
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Скиньте два ваших файла. Посмотрю.
ssdm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скрипт не видит cookie Seran4ek PHP 3 17.10.2011 23:42
SGI скрипт на perl или php Frosts PHP 2 23.03.2011 20:57
Delphi 2010 не видит файлы dcr из созданного мной пакета DrAndriy Общие вопросы Delphi 4 18.08.2010 12:18
Классы.Не видит переменные из самого класса...Вилы=( Rid Общие вопросы Delphi 3 26.04.2010 12:32