Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 ePerl, mySQL & cookies   Alisher H. Abdurahmanov   22 Aug 2000 13:01:06 
Архивное /ru.perl/65793ddb25c2.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional