<?php class mysession { var $mark; var $path; var $name; function mysession($mark='mysession_') { $this->mark = $mark; } function getfilepath($id) { return($this->path . '/' . $this->mark . $id); } function open($path, $name) { $this->path = $path; $this->name = $name; return(TRUE); } function close() { return(TRUE); } function read($id) { if($fp = @fopen(getfilepath($id), "r")) { return(fread($fp,filesize($this->getfilepath))); } else { return(""); } } function write($id, $data) { if($fp = @fopen($this->getfilepath($id), "w")) { return(fwrite($fp, $data)); } else { return(FALSE); } } function destroy($id) { return(@unlink($this->getfilepath($id))); } function garbage($lifetime) { $d=dir($this->path); while($f = $d->read()) { if((strpos($f, $this->mark) == 0 ) AND ( time() > (fileatime($f) + $lifetime))) { unlink("$this->path/$f"); } } $d->close(); return(TRUE); } } $s = new mysession(); print_r($s); print(" "); session_set_save_handler( array($s, 'open'),array($s, 'close'),array($s, 'read'),array($s, 'write'),array($s, 'destroy'),array($s, 'garbage') ); session_start(); if(!isset($_SESSION['a'])) { print("Initializing session "); $_SESSION['a'] = 'Session Var A'; $_SESSION['b'] = 123.45; $_SESSION['c'] = 0; } $_SESSION['c']++; print("Counter: " . $_SESSION['c'] . " "); print("Session archive: " . session_encode() . " "); print_r($s); print(" \n"); ?> Насколько я понимаю автор пытался создать свой алгоритм хранения куки или нечто подобное Не понимаю конкретно вот это session_set_save_handler( array($s, 'open'),array($s, 'close'),array($s, 'read'),array($s, 'write'),array($s, 'destroy'),array($s, 'garbage') ); Что это? Функция session_set_save_handler() насколько я понял позволяет задать свой алгоритм управления сессиями ожидая на входе шесть параметров, но что это? array($s, 'open') никогда не сталкивался с подобным синтаксисом. Буду рад если ктото поможет разобраться.
|