|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alisher H. Abdurahmanov 2:5005/61.61 22 Aug 2000 13:01:06 To : All Subject : ePerl, mySQL & cookies -------------------------------------------------------------------------------- .RFC-X-Complaints-To: news@relay.tpu.ru .RFC-NNTP-Posting-Date: 22 Aug 2000 04:04:29 GMT .RFC-X-Priority: 3 .RFC-X-MSMail-Priority: Normal .RFC-X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6600 From: "Alisher H. Abdurahmanov" <alish@stack.ru> Всем привет! Загвоздка возникла интересная. Значит, есть табличка в базе (mySQL), где содержится информация о пользователях. Генерим страничку с формой (пользуем ePerl) под данного юзера (ну там его имя и прочая мишура, а также его ID в hidden-поле). Каждый раз обращаться к табличке весьма напряжно (и юзеров может быть много, да и соединение с mySQL не ахти быстрое), поэтому решаем оставлять у юзера cookies. Если кукис есть - берем инфу из него. Если нет - лезем в табличку, и при первой же возможности пихаем инфу в кукис. Вроде все просто. Hо вот что странно: не работает установка кукисов из ePerl! Запарился уже, честно говоря... в любом случае лезет в базу, зараза. Другими словами, кукисы не впихивает броузеру. Есть у кого-нить идеи? Вот кусок моего кода (подскажите, что не так делаю?): <? use CGI qw( :standard ); use CGI::Cookie; use DBI; # имя кукиса $ckName = 'myCookie'; # взять кукисы %cookies = fetch CGI::Cookie; # если есть - вытянуть инфу if( $cookies{$ckName} ) { ($usrID, $usrName, ..., ... ) = split /:/, $cookies{$ckName}->value; } # если нет - лезем в таблицу else { $dbh = DBI->connect("DBI:mysql:......"); $sth = $dbh->prepare( sprintf("SELECT usrID, usrName, ..., ... FROM myTable WHERE usrAttrib='%s'",$usrAttrib) ); $sth->execute; # если ничего не нашли if( $sth->rows < 1 ) { !> <html> .... говорим, что "вас тут не стояло" </html> <? exit; } # если нашили юзера в табличке else { ($usrID, $usrName, ..., ...) = $sth->fetchrow_array; $sth->finish; $dbh->disconnect; $tsCookie = new CGI::Cookie( -name => $ckName, -value => sprintf("%d:%s:...:...",$usrID,$usrName,...,...), ); print "Set-Cookie: $tsCookie\n"; } } !> <html> ... выдаем страничку с формой (где надо, вставляем <?=$usrID!> и т.п.) </html> --- Microsoft Outlook Express 5.00.2919.6600 * Origin: Stack Ltd. (2:5005/61.61@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/65793ddb25c2.html, оценка из 5, голосов 10
|