Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Зачем переопределять обработчики в сессии?

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Зачем переопределять обработчики в сессии?
Имя
Сообщение << Старые топики   Новые топики >>
Зачем переопределять обработчики в сессии? - 2007-09-13 14:07:29.260000   
Bios_inside

Сообщений: 626
Оценки: 0
Присоединился: 2007-02-23 10:44:18.170000
Вот решил почитать про сиссии в PHP. И нашол тут здоровенный скрипт "Переопределение обработчиков сессии":
[font=verdana]&lt;? // Возвращает полное имя файла временного хранилища сессии. // В случае, если нужно изменить тот каталог, в котором должны // храниться сессии, достаточно поменять только эту функцию function ses_fname($key) { return "sessiondata/".session_name()."/$key"; } // Заглушки — эти функции просто ничего не делают function ses_open($save_path, $ses_name) { return true; } function ses_close() { return true; } // Чтение данных из временного хранилища function ses_read($key) { // Получаем имя файла и открываем файл $fname=ses_fname($key); $f=@fopen($fname,"rb"); if(!$f) return ""; // Читаем до конца файла $st=fread($f,filesize($fname)); fclose($f); return $st; } // Запись данных сессии во временное хранилище function ses_write($key, $val) { $fname=ses_fname($key); // Сначала создаем все каталоги (в случае, если они уже есть, // игнорируем сообщения об ошибке) @mkdir($d=dirname(dirname($fname)),0777); @mkdir(dirname($fname),0777); // Создаем файл и записываем в него данные сессии $f=@fopen($fname,"wb"); if(!$f) return ""; fwrite($f,$val); fclose($f); return true; } // Вызывается при уничтожении сессии function ses_destroy ($key) { return @unlink(ses_fname($key)); } // Сборка мусора — ищем все старые файлы и удаляем их function ses_gc($maxlifetime) { $dir=ses_fname("."); // Получаем доступ к каталогу текущей группы сессии $d=@opendir($dir); if(!$d) return false; $DelDir=1; // Признак того, что каталог пуст, и его можно удалить // Читаем все элементы каталога while(($e=readdir($d))!==false) { // Если это "точки", пропускаем их if($e=="."||$e=="..") continue; // Файл слишком старый? if(time()-filemtime($fname="$dir/$e")&gt;=$maxlifetime) { @unlink($fname); continue; } // Нашли не очень старый файл — значит, каталог точно // не будет в результате работы пуст. $DelDir=0; } closedir($d); // Если все файлы оказались слишком старые и удалены, // удалить и каталог if($DelDir) @rmdir($dir); return true; } // Регистрируем наши новые обработчики session_set_save_handler( "ses_open", "ses_close", "ses_read", "ses_write", "ses_destroy", "ses_gc" ); // Для примера подключаемся к группе сессий test session_name("test"); session_start(); session_register("count"); // Дальше как обычно... $count=@$count+1; ?&gt; &lt;body&gt; &lt;h2&gt;Счетчик&lt;/h2&gt; В текущей сессии работы с браузером Вы открыли эту страницу &lt;?=$count?&gt; раз(а). Закройте браузер, чтобы обнулить этот счетчик. &lt;/body&gt;[/font] Зачем это нада, если можна работать со стандартными и не парить себе мозги?
Post #: 1
RE: Зачем переопределять обработчики в сессии? - 2007-09-13 18:33:40.876666   
Lex_Voodoo

Сообщений: 7328
Оценки: 0
Присоединился: 2004-12-07 13:55:12
Стандартные сессии хранятся в файловой системе сервера (session.save_path), и по истечении определённого времени пропадают навсегда. Этот механизм заточен в php и изменить его нельзя.
Если всё устраивает - отлично, но если ты, допустим, хочешь хранить сессии в MySQL, то придётся написать свои обработчики.
Post #: 2
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Зачем переопределять обработчики в сессии?







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.