Просто добавьте еще один столбец (скажем, «user_id») в таблицу сессий, чтобы вы могли проверить его с помощью одного простого SQL-запроса.unserialize()
(она вам понадобится) обычно очень медленная функция, и проверка каждой строки в таблице сеансов может стать проблемой.
Но ... вот как CodeIgniter десериализует данные своего сеанса:
protected function _unserialize($data)
{
$data = @unserialize(strip_slashes($data));
if (is_array($data))
{
array_walk_recursive($data, array(&$this, '_unescape_slashes'));
return $data;
}
return (is_string($data)) ? str_replace('{{slash}}', '\\', $data) : $data;
}
... и вот так его называют:
protected function _unescape_slashes(&$val, $key)
{
if (is_string($val))
{
$val= str_replace('{{slash}}', '\\', $val);
}
}
Вы могли бы использовать их напрямую, если бы они не были защищены, но ... все же, вероятно, лучше просто расширитьбиблиотека сеансов вместо того, чтобы реализовывать ее самостоятельно.