Автор Тема: Session - как проверить наличие уже готовой сессии без куков  (Прочитано 5146 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Собственно сабж. имеется уже готовая сессия с нужными параметрами. но вот на следующем скрипте облом:



my $session 
= new CGI::Session("driver:File"undef, {Directory=>\'/tmp\'}); 

$sid=$session->param(_SESSION_ID);



Мне выдается другой ID сессии, каждый раз новый, ну и есно все параметры, что я загнал в сессию - NULL.
Вопрос, как инициализировать уже существующую сессию ибо прочтение CGI::Session ни на что не натолкнуло...
Всё будет хорошо - я договорился!

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
The documentations is your friend

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Если имеется ввиду строчки а-ля

    $sid 
$cgi->cookie(\'CGISESSID\') || $cgi->param(\'CGISESSID\') || undef;
    $session = new CGI::Session(undef, $sid, {Directory=>\'/tmp\'});



Уже пробовал - не работает - у мя куки отключены, а param не считывает...
Всё будет хорошо - я договорился!

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Обошел созданием скрытого поля и внесением туда ID  сессии, но это же полумера - мне прийдеться на постой ее кидать в урле...
А хочется скрытой пускать
Всё будет хорошо - я договорился!

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
либо куки либо в урле или в скрытом поле.
другого пока не придумали.
The documentations is your friend

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Цитировать
Skif:
а param не считывает...

не верю. покажи скрипт.
The documentations is your friend

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Лови


#!/usr/bin/perl -w
use CGI::Carp qw (fatalsToBrowser);
use 
CGI::Session;
use 
DBI;
use 
CGI qw/:standard/;

my $cgi = new CGI;

sub redir_url {
print 
$cgi->redirect(-uri=>"auth.pl?auth=Error");
        }

################################################
#
#               Session
#
################################################
my  $sid $cgi->param(sess) || undef;
my $session = new CGI::Session("driver:File"$sid , {Directory=>\'/tmp\'}) || undef;
#my $sid = $session->param(_SESSION_ID) || undef;

#my $session = new CGI::Session("driver:File", undef, {Directory=>\'/tmp\'}) || undef;


$login=param(name);
$login="\'$login\'";

$table_log="squid_log_";
$operator="operator";
$oper_pass="secret";
$res = "0";
$table_auth="pass_rule";
$passwd=param(pass);

#################################################
#                                               #
#               Open config file                #
#                                               #
#################################################

open (mylog_conf, "/usr/local/script/traff_db/etc/my_log/my_log.conf");
while (<mylog_conf>){

    ($section,$param)=split(":",$_);
    if ($section eq "table") {
    chomp $param;
    $table=$param;
    }
    if($section eq "operator"){
    chomp $param;
    $operator=$param;
    }
    if($section eq "pass"){
    chomp $param;
    $oper_pass=$param;
    }
    if($section eq "pass_rule"){
    chomp $param;
    $table_auth=$param;
    }


}

close(mylog_conf);

$table_log="$table_log$table";

#################################################
#                                               #
#       Check authentificated                   #
#                                               #
#################################################
my ($dbh,$sth,$count);
$dbh = DBI->connect("DBI:mysql:host=freebsd;database=squid","$operator","$oper_pass")
                or die "cann\'t open db";
$sth = $dbh->prepare("SELECT user_pass FROM $table_auth where user_login=$login"
)
                or die "cann\'t execute select from db table $!";
$sth->execute ();

my $user_pass;
$user_pass = $sth->fetchrow_array();

$sth->finish();
$dbh->disconnect();

$auth="Error";

if((crypt($passwd,$user_pass) ne $user_pass)){
    $auth="Error"
}
else {
    $auth="ok";
}


if ($auth eq "Error") {
   &redir_url;
}
else {
############################################################################
$name_stat=param(name);
$headpage="уФБФЙУФЙЛБ Й МЙЮОЩЕ БРБТФБНЕОФЩ РПМШЪПЧБФЕМС $name_stat";
print $cgi->header(-expires=>\'no cache\');
print $cgi->start_html(-title=>$headpage);
#print "$operator - $oper_pass - $login - $auth - $passwd - $user_pass 
";
#################################################
#                                               #
#       Database connect and select column      #
#                                               #
#################################################
print "$operator - $oper_pass - $login - $table_log - $sid";
my ($dbh,$sth,$count);
$dbh = DBI->connect
                ("DBI:mysql:host=freebsd;database=squid","$operator","$oper_pass")
                                                    or die "cann\'t open db table $!";
$sth = $dbh->prepare("SELECT sum(size) FROM $table_log where шdent=$login")
                                                    or die "cann\'t execute select from db table $!";
$sth->execute ();


#################################################
#                                               #
#               Calculate size of traf          #
#                                               #
#################################################
my $size;
$size = $sth->fetchrow_array();


print "<center>";
    print "<table  cellspacing=0 cellpadding=0 border=0>";
    print "<tr>";
    print   "<td><img src=\\"/image/car.gif\\" width=\\"180\\" height=\\"120\\" border
=\\"0\\" alt=\\"\\"></td>";
    print   "<td><img src=\\"/image/main.gif\\" width=\\"600\\" height=\\"120\\" borde
r=\\"0\\" alt=\\"\\"></td>";
    print   "</tr>";

    print "</table>";


print "<table width=\\"800\\" cellspacing=\\"0\\" cellpadding=\\"0\\">";
print "<tr leftMargin=0> ";
print "<td width=\\"180\\" bgcolor=\\"red\\"  background=\\"/image/bg3.gif\\" valign=\\
"top\\">";
        print " <DIV align=left>";
        print "    <OBJECT >";
        print "    <EMBED src=\\"/image/menu.swf\\" WIDTH=180 HEIGHT=399 TYPE=\\"ap
plication/x-shockwave-flash\\"></EMBED>";
        print "</OBJECT></DIV>";

print "    </td>";
print "    <td width=\\"440\\" bgcolor=\\"white\\" valign=top>";

print "<table>";
print "<tr>";
print "    <td><img src=\\"/image/apart.jpg\\" width=\\"440\\" height=\\"80\\" border=
\\"0\\" align=\\"left\\" alt=\\"\\">";

        print "</p></td>";
        print "    </tr></table>";

print "<font color=navy><i>";
print $cgi->h2(\'уФБФЙУФЙЛБ:\');
print "</i></font>";

print table({-align=>CENTER,valign=>CENTER,-cellpadding=>2, -border=>2,
    -bordercolordark=>navy, -bordercolorlight=>"#719BF2", -width=>300},caption(\'
\'),
    Tr({-align=>CENTER,-valign=>TOP},
        td ("йНС РПМШЪПЧБФЕМС"),td("тБЪНЕТ ФТБЖЙЛБ, ВБКФ")),
    Tr({-align=>CENTER,-valign=>TOP},
        td ("$name_stat"),td("$size")));

print "    </td>";
print "    <td width=\\"180\\" bgcolor=\\"white\\" valign=\\"top\\">



<d
iv align=\\"justify\\">
            <img src=\\"/image/banner.jpg\\" width=\\"180\\"
            height=\\"250\\" border=\\"0\\" alt=\\"\\">";
        print "    </td>";
        print "    </tr>";
        print "    </table>";
        print "    </center>";


$sth->finish();
$dbh->disconnect();

print $cgi->end_html;
}
exit(0);

Всё будет хорошо - я договорился!

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Сори


my  $sid 
$cgi->param(\'CGISESSID\') || undef; 
my $session = new CGI::Session("driver:File", $sid , {Directory=>\'/tmp\'}) || undef;

Всё будет хорошо - я договорился!

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Это уже модифицированый с чтением sid из урл-а (верхний вариант)
Всё будет хорошо - я договорился!

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Ничего не понял...
В первом варианте у тебя
Цитировать

my  $sid = $cgi->param(sess) || undef;

а во втором
Цитировать

my  $sid = $cgi->param(\'CGISESSID\') || undef;

форму где происходит отправка sess я не увидел.
Ты точно там ничего не напутал?
The documentations is your friend

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Извини что поздно - занят очень был
	
if (
$error_auth eq "Error") {
	
	
print 
"<center>
<H2><font color=blue>пЫЙВЛБ БЧФПТЙЪБГЙЙ. рПРТПВХКФЕ ЕЭЕ ТБЪ.</font></H2></center>"
;
	
	
}
                print 
table({-align=>CENTER,valign=>CENTER},
                
caption(\'<H3><font color=navy>бЧФПТЙЪБГЙС РПМШЪПЧБФЕМС</font></H3>\'),
                Tr({-align=>CENTER,-valign=>TOP},
                        [
                        th([start_form(-method=>"post",-action=>\'home.pl\')]),
	
	
	
td(["йНС:    ",textfield(-name=>\'name\',-size=>15,-class=>\'bginput\')
                        ]),
                        td(["рБТПМШ: ",password_field(-name=>\'pass\',-size=>15,-class=>\'bginput\')]),
                        td(["",hidden(-name=>\'auth\',-default=>$sid_session)]),
	
	
	
td([\'\',submit{-name=>\'choice\',-value=>\'Ok\'}]),
	
	
	
	
	
	
	
	
  
                        td([end_form])
                        ]
                        )
	
            ); 
Всё будет хорошо - я договорился!

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Это та реализация где я ID сессии пересылаю в урле через скрытое поле. Но мне сие не нравиться и либо я не понял правильно CGI::Session y либо не правильно вызываю его. Объяснюсь: в примерах (выше) мне показалосьб что сам сервер передает этот ID браузеру и нужно лишь правильно выявить его.
Всё будет хорошо - я договорился!

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Цитировать
Skif:
hidden(-name=>\'auth\',-default=>$sid_session)

а принимаешь ты param(sess).
The documentations is your friend

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28