Такая тема: мне нужны сессии тока для зарегенных клиентов. Остальным там просто хранить нечего. Решил кароче приаттачить сессии сразу к пользователям. Табличка: CREATE TABLE `folk` ( `login` varchar(20) default NULL, `password` varchar(40) NOT NULL default '', `rank` enum('client','admin') NOT NULL default 'client', `sid` varchar(32) NOT NULL default '', `sdata` text NOT NULL, `stime` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`sid`), KEY `stime` (`stime`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; А еще, чтобы было побезопаснее хочу выдавать при каждом запросе скрипта новый sid и в базе соответственно менять старый на новый. Сначала делал $old_sid=session_id($new_sid); и менял в базе. Косячит. То и куки и транс_сиды вместе прут, то ни то, ни то. Забил. Второй вариант: открыл сессию, сохранил ее данные, закрыл, открыл новую с новым именем, туда обратно всё вернул. Прёт, но тока со стандартным механизмом сессии, в файлы вот который... А с моим, который в базу пишет, не прёт. Помогите пожалста разобраться почему. Код: <?php // <ДЛЯ БД> define('DB_SERVER','localhost'); define('DB_USERNAME','root'); define('DB_PASSWORD',''); define('DB_DBNAME','dbname'); function open ($save_path, $session_name) { return true; } function close() { return true; } function read ($id) { // Соединение, выбор БД mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die('Could not connect'); mysql_select_db(DB_DBNAME); $query="SELECT `sdata` FROM `folk` WHERE `sid`='$id'"; $result=mysql_query($query); $row=mysql_fetch_array($result,MYSQL_ASSOC); return $row!=false?$row['sdata']:''; } function write ($id, $sess_data) { // Соединение, выбор БД mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die('Could not connect'); mysql_select_db(DB_DBNAME); $query="SELECT @login:=`login`,@password:=`password`,@rank:=`rank` FROM `folk` WHERE `sid`='$id'"; $result=mysql_query($query); $query="SET @password:=IF(ISNULL(@password),'',@password), @rank:=IF(ISNULL(@rank),'',@rank)"; $result=mysql_query($query); $query="REPLACE INTO `folk` VALUES (@login,@password,@rank,'$id','$sess_data',UNIX_TIMESTAMP())"; $result=mysql_query($query); return $result; } function destroy ($id) { // Соединение, выбор БД mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die('Could not connect'); mysql_select_db(DB_DBNAME); $query="UPDATE `folk` SET `stime`=0,`sdata`='' WHERE `sid`='$id'"; $result=mysql_query($query); return $result; } function gc ($maxlifetime) { // Соединение, выбор БД mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die('Could not connect'); mysql_select_db(DB_DBNAME) or die('Could not select database'); $query="DELETE FROM `folk` WHERE ISNULL(`login`) AND `stime`<(UNIX_TIMESTAMP()-$maxlifetime)"; $result=mysql_query($query); return $result; } // <без этой строчки всё пучково> session_set_save_handler ("open", "close", "read", "write", "destroy", "gc"); // <открываем данные сессии, которая уже есть> session_start(); $_SESSION['jjj']='ggg'; // <сохраняем данные> $data=serialize($_SESSION); // <закрываем ее> session_destroy(); // <переоткрываем с новым sid> session_id(md5(uniqid(rand(),1))); session_start(); $_SESSION=unserialize($data); print_r($_SESSION); ?> Всю ночь вожусь. Уже бы тыщщу раз сделал свой механизм сессий, но интересно всё-таки понять, где косячит. Пишет ваще чё-то экзотическое: Fatal error: session_start() [<a href='function.session-start'>function.session-start</a>]: Failed to initialize storage module: user (path: /tmp) in p:\home\art\www\user\sessions.php on line 76