Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Почему не достаются значения?  (Прочитано 5947 раз)
0 Пользователей и 1 Гость смотрят эту тему.
vetlblya
Гость
« : 01-06-2010 08:49 » 

пытюсь реализовать сессию. данные осессии хранятся в mysql. вот так создаю запись в бд:

Код:

$dbh = DBI->connect("dbi:mysql:database=db:host=host", $us, $pas);
 
%session  = CGI::Session->new("driver:mysql", undef, {Handle  => $dbh});

в бд появляется строка с _SESSION_ID.

потом пытаюсь просмотреть идентификатор сессии из хэша, а он пустой:

Код:

     $session{_SESSION_ID};

что делаю неправильно???
« Последнее редактирование: 01-06-2010 12:08 от McZim » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 01-06-2010 12:09 » 

vetlblya, ты хоть копипасти качественно - мусор сплошной!

Повторил твой тест (за исключением явных ошибок) - все путем. Т.ч. потрудись объяснить по-человечески, что хочешь сделать, как и в каких условиях делаешь и что получается.

Код:
#!/usr/bin/perl -W

use DBI;
use CGI::Session;
use strict;

my $sid = undef;
my $dbh = DBI->connect('dbi:mysql:database=test;host=localhost', 'root', '');
my $session = CGI::Session->new('driver:mysql', $sid, { 'Handle' => $dbh });
print $session->id(), "\n";

Код:
$ ./session_test.pl
d7eb8345b870afe77f1ed9ad22e9736a

Код:
mysql> select * from sessions\G
*************************** 1. row ***************************
       id: d7eb8345b870afe77f1ed9ad22e9736a
a_session: $D = {'_SESSION_ID' => 'd7eb8345b870afe77f1ed9ad22e9736a','_SESSION_ATIME' => 1275393759,'_SESSION_REMOTE_ADDR' => '','_SESSION_CTIME' => 1275393759};;$D

Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
vetlblya
Гость
« Ответ #2 : 02-06-2010 06:22 » 


скрипты и бд mysql  на хосте.
Код:
#!/usr/bin/perl -wT
use CGI::Session( '-ip_match' );
use CGI::Session::Driver::mysql;
use strict;
use DBI;

my $dbh = DBI->connect("dbi:mysql:database=db:host=localhost", 'root', 'pass');
my %session  = CGI::Session->new("driver:mysql", undef, {Handle  => $dbh});

print $session{_SESSION_ID};

в лог ошибок записывается строка:

Reference found where even-sized list expected at /cgi-bin/avt.cgi line 47
47 строка:
Код:
%session  = CGI::Session->new("driver:mysql", undef, {Handle  => $dbh_sess})
Код:
MySql->

b75fdb174311760707ffb36606298386  $D = {_SESSION_ID => 'b75fdb174311760707ffb3660629...
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 02-06-2010 07:17 » 

vetlblya, и совсем не видишь у себя ошибок? Даже после того, как я показал рабочий пример?

Запомни следующее:
1. Ссылка — это скаляр!
2. Объект — всегда ссылка!

А у тебя session, почему-то — хеш...
Потом, не пытайся лезть в скрытые свойства — используй публичный интерфейс. Здесь — метод id().
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
vetlblya
Гость
« Ответ #4 : 02-06-2010 09:08 » 

Ура!!! заработало!!!!
RXL, спасибо за тыканье носом в ошибки!!!!
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 02-06-2010 09:29 » new

Не за что. Лишь бы на пользу пошло.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines