示例#1
0
<?php

use infrajs\db\Db;
$db =& Db::pdo();
if (!$db) {
    return;
}
$sql = <<<END
CREATE TABLE IF NOT EXISTS `ses_sessions` (
  `session_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id сессии',
  `password` varchar(255) NOT NULL COMMENT 'Пароль сессии',
  `email` varchar(255) COMMENT 'Email чтоб была возможность авторизироваться и чтоб сессия для одного email-а была уникальная, сама сессия email никак не обрабатывает, обработка делается отдельно кому это надо.',
  `date` DATETIME NULL DEFAULT NULL COMMENT 'Дата верификации',
  `verify` int(1) unsigned,
  PRIMARY KEY (`session_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
END;
try {
    $r = $db->exec($sql);
} catch (Exception $e) {
    echo '<pre>';
    print_r($e);
    die(print_r($db->errorInfo(), true));
}
if ($r === false) {
    Ans::err(print_r($db->errorInfo(), true));
}
$sql = <<<END
CREATE TABLE IF NOT EXISTS `ses_records` (
  `rec_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id записи в сессию',
  `session_id` int(10) NOT NULL COMMENT 'Уникальный идентификатор сессии пользователя',
示例#2
0
 public static function writeNews($list, $session_id)
 {
     if (!$list) {
         return;
     }
     $db =& Db::pdo();
     global $infra_session_lasttime;
     $isphp = !!$infra_session_lasttime;
     $sql = 'insert into `ses_records`(`session_id`, `name`, `value`, `time`) VALUES(?,?,?,FROM_UNIXTIME(?))';
     $stmt = $db->prepare($sql);
     $sql = 'delete from `ses_records` where `session_id`=? and `name`=? and `time`<=FROM_UNIXTIME(?)';
     $delstmt = $db->prepare($sql);
     Each::exec($list, function &($rec) use($isphp, &$delstmt, &$stmt, $session_id) {
         $r = null;
         if (!$isphp && $rec['name'][0] == 'safe') {
             return $r;
         }
         $name = Sequence::short($rec['name']);
         $delstmt->execute(array($session_id, $name, $rec['time']));
         $stmt->execute(array($session_id, $name, Load::json_encode($rec['value']), $rec['time']));
         if (!$isphp && !$name) {
             //Сохранится safe
             Session::clear();
         }
         return $r;
     });
 }