session_set_cookie_params(integer lifetime, string path, string domain, bool secure)
Функция session_set_cookie_params устанавливает четыре параметра, используемых для файлов cookie данного сеанса. Обязательно задавать только параметр lifetime.
session_set_save_handler(string open, string close, string read, string write, string destroy, string garbage)
Функция session_set_save_handler позволяет реализовать альтернативный метод обработки сеансов. Каждый аргумент представляет собой имя функции для обработки определенного аспекта процесса обработки сеанса (табл. 8.5). Это можно реализовать в виде автономных функций или методов класса. Выбрав последнее, вы, как и автор в листинге 8.8, будете передавать имя метода в виде двухэлементных массивов. Первый элемент должен ссылаться на объект или класс. Второй элемент содержит имя метода. При использовании статических методов передайте это имя классу. При использовании объекта передайте в первом элементе ссылку на объект, как показано ниже.
Листинг 8.8. Дескриптор сохранения сеанса
<?php
class mySession {
//префикс, которым обозначаются все файлы сеанса var $mark;
//путь к каталогу, в котором хранятся файлы сеанса var $path;
//имя файла cookie сеанса 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($id))));
}
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(); 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(" Инициализация сеанса <br>"); $_SESSION['a'] = 'Session Var A'; $_SESSION['b'] = 123.45;
$_SESSION['c'] = 0;
}
// обновить счетчик доступа сеанса $_SESSION['c']++;
print("Счетчик доступа: " . $_SESSION['c'] . "<br>"); print("Архив сеанса: " . session_encode() . "<br>");
boolean session_start()
Функция session_start предназначена для активизации сеанса. Если сеанса не существует, он будет создан. Так как при этом должен отсылаться файл cookie, перед отправкой какого-либо текста в браузер необходимо воспользоваться функцией session_start. Однако можно обойтись и без этой функции и настроить PHP таким образом, чтобы он автоматически запускал сеансы по запросу. Для этого следует задать в конфигурационном файле php.ini директиву session.auto_start. После запуска сеанса содержимое массива _SESSION будет сохранено для пользователя сеанса.
boolean session_unregister(string name)
Функция session_unregister предназначена для удаления переменной из сеанса и не сохраняется вместе с сеансом по завершении работы сценария. Вместо того чтобы использовать эту функцию, можно удалить соответствующий элемент из массива _SESSION.
session_unset()
Функция session_unset удаляет все переменные сеанса из массива _SESSION. session_write_close()
Эта функция немедленно сохраняет дескриптор сеанса. Обычно PHP записывает переменные сеанса после того, как завершается вывод в браузер, что делает эту функцию ненужной. При наличии параллельных соединений, использующих тот же сеанс с фреймами HTML, можно повысить производительность, закрыв сеансы вручную.
В противном случае каждый запрос блокируется до тех пор, пока не будет снята блокировка сеанса. Визуально это будет видно по загрузке одного фрейма за раз.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Браузер ввода-вывода. Часть Седьмая.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
PHP. Браузер ввода-вывода. Часть Шестая. | PHP. Браузер ввода-вывода. Часть Восьмая. |