|
(PHP 4, PHP 5)
session_set_save_handler - устанавливает пользовательские функции хранения сессии.
Описание
bool session_set_save_handler (string open, string close, string read, string write, string destroy, string gc)
session_set_save_handler() устанавливает пользовательские функции хранения сессии, которые используются для хранения и запрашивания данных, ассоциированных с сессией.Это чаще всего используется, когда метод хранения отличается от методов PHP-сессий. Например, при хранении данных сессии в локальной БД. Возвращает TRUE при успехе, FALSE при неудаче.
Примечание: вы обязаны установить в опции конфигурации session.save_handler значение user в вашем файле php.ini, для того чтобы session_set_save_handler() работала.
Примечание: обработчик "write" не выполняется после закрытия потока вывода.Таким образом, вывод отладочных операторов в обработчике "write" никогда не будет виден в браузере.Если необходим вывод отладки, можно записать его в файл.
В следующем примере показано хранение данных сессии в файле, аналогично обработчику по умолчанию PHP-сессий files.Этот пример можно легко расширить для покрытия хранения БД с использованием вашей любимой машины работы с БД, поддерживаемой в PHP.
Функция read должна всегда возвращать значение, чтобы обработчик сохранения всегда работал, как ожидается. Возвращает пустую строку, если нет данных для чтения. Return-значения из других обработчиков конвертируются в булево выражение. TRUE при успехе, FALSE при неудаче.
|
Пример 1. session_set_save_handler()
<?php
function open ($save_path, $session_name) {
global $sess_save_path, $sess_session_name;
$sess_save_path = $save_path;
$sess_session_name = $session_name; return(true); }
function close() {
return(true); }
function read ($id) {
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
if ($fp = @fopen($sess_file, "r")) {
$sess_data = fread($fp, filesize($sess_file));
return($sess_data); } else { return("");
// Здесь обязана возвращать "".
} }
function write ($id, $sess_data) {
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
if ($fp = @fopen($sess_file, "w")) {
return(fwrite($fp, $sess_data)); }
else
{ return(false); } }
function destroy ($id) {
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
return(@unlink($sess_file)); }
/*******************************************************************
* ПРЕДУПРЕЖДЕНИЕ - Вам понадобится реализовать здесь какой-нибудь *
* вариант утилиты уборки мусора.*
*******************************************************************/
function gc ($maxlifetime) { return true; }
session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");
session_start();
// продолжить нормальное использование сессий
?> |
|
По материалам сайта: http://www.php.su/
|