INSERT INTO phpbb_sessions (session_id, session_user_id, session_start, session_time, session_ip, session_page, session_logged_in, is_robot, session_admin) VALUES ('c39eef84de6ee40201d9c70af6dd3048', 3391, 1139237593, 1139237593, 'c3de4304', 0, 1, '0', 0)
за такое надо убивать на месте
зачем нужна сессия? сессия нужна для сохранения переменных между сеансами связи конкретного браузера и сервера!
жесткий набор полей, хранящихся в сессии это ламеризм. создавая объект сессии, приложение должно получать в результате объект с набором полей, определенных в предыдущих сессиях. например perl:
use Session;
$session = Session::new();
все. после этого метод new спер из кукисов сид и поднял из файла/базы сохраненные поля или сделал редирект на страницу логина(или завел новую), если сессия определена как неверная или ворованная. например, для восстановленной или новой сессии уже должно быть определено как минимум:
$session->{'sid'}
$session->{'UserAgent'}
$session->{'IP'}
+ какие-то дополнительные поля. например, сделанные за сессию покупки (интернет-магазин), путь пользователя в ресурсе (статистика). модуль и репозиторий сессий не должен косячицца при изменении политики использования сессий в различных ресурсов. иначе (результат плохой проектировки) резко возрастает себестоимость программинга, что влечет затягивание сроков сдачи и завышение цен.
если данные храняца в базе (что более громоздко), то делается 2 таблицы: первая для хранения данных, по которым определяется принадлежность сессии. Например:
$session->{'id'} - айдишник сессии в таблице сессий
$session->{'sid'}
$session->{'UserAgent'} - лучше мд5(или другой хэш) от него, что бы обойтись varchar-ом
$session->{'IP'}
$session->{'UserID'}
$session->{'ext'} - есть ли дополнительные данные
все. больше там ничего быть не должно. эта таблица содержит индексы по всем полям, кроме ЮзерИД и экст.
вторая таблица - таблица дополнительных данных. содержит свой примари-кей, айдишник сессии (берем из первой таблицы. он же индекс. если юзаеш не мускуль, то желательно завязать его через триггер на онделит из первой). и 2 колонки - название-значение дополнительного параметра.
сразу предупреждаю, что сессии, реализованные через субд на серванте с большой нагрузкой желательно отвалить на отдельную субд или, хотя бы на отдельную базу (да-да. придеца сделать отдельный хендлер на нее) а вообще, юзай файлы и не парься. герениш сид (например, 32 символа из [A-Z][a-z][0-9]) и храниш это в отдельной папке (а лучше в дереве вида: корень_репозитория/первая_буква_сида/вторая_буква_сида/)
имя файла - сид (он же храница в кукисах юзера)
в файле через разделитель (например, ### или \n или придумай сам) записи. записи вида: имя_поля===значение поля (здесь === разделитель. не нравица этот - придумай другой) в конструкторе тыриш сид из кукисов и поднимаеш файл сессии (если он есть). проверяеш корректность сессии (например, юзерагент обязательно - кукис не может перекочевать корректно из осла в мазилку. mtime файла). ну дальше, думаю сам догадаешся
и не забудь в любом случае чистить безжизненные сессии хотя бы раз в неделю (это актуально и для файла, и для субд)