Мировые информационные ресурсы. Лекция 9. Cookie и отслеживание сеанса

1.

Мировые информационные ресурсы
Лекция 9. Cookie и отслеживание сеанса

2.

Преимущества отслеживания пользовательских
данных
содержание сайта настраивается в соответствии с
предпочтениями пользователя
из сайта исключается бесполезная или не представляющая
интереса информация.
для администратора сайта отслеживание пользовательских
предпочтений открывает возможности целевого маркетинга и
анализа популярности материалов сайта.
Концепция «наблюдения» за пользователем в процессе
перемещения по сайту обычно называется «отслеживанием
сеанса» (session tracking).
2

3.

Cookie
- представляет собой небольшой пакет информации,
переданный web-сервером и хранящийся на клиентском
компьютере.
- в cookie можно сохранить полезные данные, описывающие
состояние пользовательского сеанса, чтобы в будущем
загрузить их и восстановить параметры сеансовой связи между
сервером и клиентом.
- вследствие того, что cookie обычно связываются с
конкретным пользователем, в них часто сохраняется
уникальный идентификатор пользователя (UIN), который
заносится в базу данных на сервере и используется в качестве
ключа для выборки из базы всей информации, связанной с
этим идентификатором.
- общий объем cookie не превосходит 4 Кбайт (4096 байт).3

4.

Компоненты cookie
Имя cookie
- является обязательным параметром, по которому программа ссылается на
cookie. Можно провести аналогию между именем cookie и именем
переменной.
Значение
- фрагмент данных, связанный с именем cookie. В этих данных может
храниться любая информация — идентификатор пользователя, цвет фона,
текущая дата и т. д.
Срок действия
- дата, определяющая продолжительность существования cookie. Как только
текущая дата и время превосходят заданный срок действия, cookie
становится недействительным и перестает использоваться. В соответствии
со спецификацией cookie устанавливать срок действия для cookie
необязательно. Но средства РНР для работы с cookie требуют, чтобы срок
действия устанавливался, иначе cookie становится недействительным в
конце сеанса (то есть когда пользователь покидает сайт).
4

5.

Компоненты cookie
Домен
- домен, который создал cookie и может читать его значение.
- Если домен состоит из нескольких серверов и доступ к cookie
должен быть разрешен всем серверам, то имя домена можно задать
в форме .site.ru. В этом случае все потенциальные домены третьего
уровня, принадлежащие сайту site.ru (например, wap.site.ru или
news.site.ru), смогут работать с cookie.
- по соображениям безопасности cookie могут устанавливаться только
для домена сервера, пытающегося создать cookie.
- Данный компонент необязателен; если он не указан, по умолчанию
используется имя домена, из которого было получено значение
cookie.
5

6.

Компоненты cookie
Путь
- URL, с которого предоставляется доступ к cookie. Любые попытки
получения доступа к cookie за пределами этого пути пресекаются.
- Данный компонент необязателен; если он не задан, по умолчанию
используется путь к документу, создавшему cookie.
Безопасность
- параметр, показывающий, допускается ли чтение cookie в
небезопасной среде. По умолчанию используется значение FALSE.
6

7.

Компоненты cookie
Хотя при создании cookie используются одни и те же синтаксические
правила, формат хранения cookie зависит от браузера.
Чтобы просмотреть cookie, сохраненные браузером, достаточно
открыть их в любом текстовом редакторе.
Internet Explorer сохраняет свои cookie в папке с именем «Cookies», a
Netscape Communicator использует для этой цели один файл с
именем cookies.
Некоторые браузеры ограничивают количество создаваемых cookie.
7

8.

Функция setcookie( )
- сохраняет cookie на компьютере пользователя. Синтаксис:
setcookie (имя [значение [, дата [, путь [, домен [, безопасность]]]]])
Значение cookie должно устанавливаться до передачи в браузер любой
другой информации, относящейся к странице.
Невозможно создать cookie и использовать его на той же странице.
Пример:
$userid = "4139b31b7bab052";
$cookie_set = setcookie ("uid", $userid, time()+3600, "/", ".site.ru", 0);
После перезагрузки или перехода на другую страницу становится доступной
переменная $userid, содержащая идентификатор 4139b31b7bab052.
Срок действия cookie истекает ровно через один час (3600 секунд) после
отправки. После истечения этого срока cookie становится недействительным.
Доступ к cookie разрешен только из домена site.ru.
Разрешен доступ к cookie через небезопасный протокол.
8

9.

Функция setcookie( )
Пример: сохранение цвета фона, выбранного пользователем
<?
// Если переменная $bgcolor существует
if (isset($bgcolor)) :
setcookie("bgcolor", $bgcolor, time()+3600);
?>
<html>
<body bgcolor="<?=$bgcolor;?>">
<? // Значение $bgcolor не задано, отобразить форму
else :
<body bgcolor="white">
9

10.

Функция setcookie( )
<form action="<? print $PHP_SELF; ?> method=="post">
Ваш любимый фоновый цвет?
<select name="bgcolor">
<option value="red">red
<option value="blue">blue
<option value="green">green
<option value="b1ack">black
</select>
<input type="submit" value="Установить фоновый цвет">
</form>
<? endif; ?>
</body></html>
10

11.

Имена cookie как элементы массива
Пример:
<?
setcookie("example[uid]", "4139b31b7bab052", time( )+3600);
setcookie("example[color]", "black", time( )+3600);
setcookie("example[preference]", "english", timeO+3600);
if (isset($example)):
while (list ($name, $value) = each ($example)):
echo "$name = $value<br>\n";
endwhile;
endif;
?>
В результате выполнения этого фрагмента будет выведен следующий
результат (а на клиентском компьютере будут созданы три cookie):
uid = 4139b31b7bab052, color = black, preference = english
11

12.

Применение cookie
Cookie применяются для хранения числовых идентификаторов (UIN), по
которым в дальнейшем на сервере производится выборка информации,
относящейся к данному пользователю.
Сохраненные данные впоследствии используются для настройки параметров
форматирования страницы.
Пример: имеется таблица userjnfo в базе данных с именем user. В ней
хранятся атрибуты пользователя: идентификатор, имя и адрес электронной
почты пользователя:
mysql>create table user_info (
->user_id char (18),
->fname char(15),
->email char(35));
Чтобы пользователю не приходилось вводить всю информацию заново,
идентификатор загружается из cookie на клиентском компьютере.
12

13.

Применение cookie
<?
if (! isset($userid)) :
$id = 15;
setcookie ("userid", $id, time( )+3600);
print "A cookie containing your userID has been set on your machine.
Please refresh the page to retrieve your user information";
else:
@mysql_connect("localhost", "web", "4tf9zzzf") or die("Could not connect to
MySQL server!");
@mysql_select_db("user") or die("Could not select user database!");
13

14.

Применение cookie
$query = "SELECT * FROM users13 WHERE user_id = '$userid'";
$result = mysql_query($query)l;
// Если совпадение найдено, вывести данные пользователя.
if (mysql_num_rows($result) == 1) :
$row = mysql_fetch_array($result);
print "Hi ".$row["?name"].",<br>";
print "Your email address is ".$row[ "email"];
else:
print "Invalid User ID!";
endif;
mysql_close();
endif;
?>
14

15.

Уникальные идентификаторы
Функция uniqid( )
- генерирует уникальный идентификатор из 13 символов,
значение которого основано на текущем времени. Синтаксис:
uniqid(префикс [, дополнение])
В параметре префикс передается строка, с которой должен
начинаться UIN. Поскольку этот параметр является
обязательным, при вызове необходимо передать хотя бы
пустую строку.
Если необязательный параметр дополнение равен TRUE,
функция uniqid( ) генерирует UIN из 23 символов.
15

16.

Уникальные идентификаторы
Чтобы быстро создать уникальный идентификатор, достаточно
при вызове uniqid( ) передать один параметр — пустую строку:
$uniq_id = uniqid(" ");
Генерируется строка из 13 символов - например: '39b3209ce8ef2'
В другом варианте сгенерированное значение присоединяется к
строке, определяемой параметром префикс:
$uniq_id = uniqid("php", FALSE):
// Генерируется строка из 16 символов - например:
'php39b3209ce8ef2'
16

17.

Уникальные идентификаторы
Поскольку uniqid( ) генерирует UIN на основании текущего
времени, существует вероятность того, что идентификатор
удастся подобрать. Чтобы значение идентификатора было
действительно случайным, можно предварительно
сгенерировать префикс при помощи функции РНР rand( ).
srand((double) microtime( ) * 1000000);
$uniq_id = uniqid(rand( ));
Функция srand( ) инициализирует генератор случайных чисел.
Передача rand( ) в качестве параметра uniqid( ) приводит к тому,
что функция uniqid( ) вызывается с заранее сгенерированным
случайным префиксом, что усложняет подбор сгенерированного
UIN.
17

18.

Уникальные идентификаторы
Пример: регистрация пользователей
При первой загрузке сценария пользователю предлагается
заполнить короткую форму с именем и адресом электронной
почты.
Эта информация вместе со сгенерированным уникальным
идентификатором сохраняется в таблице user_info, определение
которой приведено выше. Cookie с этим идентификатором
сохраняется на компьютере пользователя.
При всех последующих посещениях сценарий ищет в базе
данных уникальный идентификатор, взятый из cookie, и выводит
в браузере найденную информацию о пользователе.
18

19.

Уникальные идентификаторы
Пример: регистрация пользователей
Принципиально возможны три ситуации:
Пользователь не заполнял форму и не имеет cookie. В этом
случае он должен заполнить форму.
Пользователь заполнил форму, но cookie еще не создано. В
этом случае информация пользователя сохраняется в базе
данных и создается cookie со сроком действия один месяц.
Пользователь возвращается после предыдущих посещений.
Если срок действия cookie еще не истек, сценарий читает
идентификатор пользователя и загружает соответствующую
информацию из базы данных.
19

20.

Уникальные идентификаторы
<?
$form = "
<form action=\"userinfo.php\" method=\"post\">
<input type=\"hidden\" name=\"seenform\"> Ваше имя?<br>
<input type=\"text\" name=\"fname\" size=\"20\"><br>Ваш email?<br>
<input type=\"text\" name=\"email\" size=\"20\"><br>
<input type=\"submit\" value=\"Зарегистрироваться\">
</form>";
20

21.

Уникальные идентификаторы
// Если форма еще не отображалась
if ((! isset ($seenform)) && (! isset ($userid))) :
print $form;
// Если форма отображалась, но данные пользователя еще не
обработаны
elself (isset ($seenform) && (! isset ($userid))) :
srand ((double) microtime( ) * 1000000);
$uniq_id = uniqid(rand( ));
@mysql_pconnect("localhost", "root", "") or die("Невозможно
подключиться к серверу MySQL");
@mysql_select_db("users") or die("Не выбрана база данных");
21

22.

Уникальные идентификаторы
$query = "INSERT INTO user_info VALUES('$uniq_id', '$fname',
'$email')";
$result = mysql_query($query) or die("Вставка невозможна!");
setcookie ("userid", $uniq_id, time( )+2592000);
print "Регистрация $fname успешно завершена";
elseif (isset($userid)) :
@mysql_pconnect("localhost", "root", "") or die("Невозможно
подключиться к серверу MySQL");
@mysql_select_db("users") or die("Не выбрана база данных");
22

23.

Уникальные идентификаторы
$query = "SELECT * FROM user_info WHERE user_id = '$userid' ";
$result = mysql_query($query) or die("Не найдены данные
пользователя");
$row = mysql_fetch_array($result);
print "Уважаемый ".$row["fname"].",<br>";
print "Ваш e-mail:".$row["email"];
endif;
?>
23

24.

Отслеживание сеанса
Сеансом (session) называется период времени, который начинается с
момента прихода пользователя на сайт и завершается, когда
пользователь покидает сайт.
При входе на сайт пользователю присваивается уникальный
идентификатор сеанса (SID), который сохраняется на компьютере
пользователя в cookie с именем PHPSESSID.
Если использование cookie запрещено или cookie вообще не
поддерживаются, SID автоматически присоединяется ко всем локальным
URL на протяжении сеанса.
В то же время на сервере сохраняется файл, имя которого совпадает с
SID.
По мере того как пользователь перемещается по сайту, значения
некоторых параметров должны сохраняться в виде сеансовых
переменных.Эти переменные сохраняются в файле пользователя.
При последующем обращении к сеансовой переменной сервер
открывает сеансовый файл пользователя и ищет в нем нужную
переменную.
24

25.

Конфигурация РНР
enable-trans-id
Если РНР компилируется с этим флагом, ко всем
относительным URL автоматически присоединяется
идентификатор сеанса (SID). Дополнение записывается в
формате имя_сеанса=идентификатор_сеанса, где имя_сеанса
определяется в файле php.ini.
Если не включать этот флаг, в качестве SID можно
использовать константу.
track_vars
Установка флага track_vars позволяет использовать массивы
$HTTP_*_VARS[ ], где * заменяется одним из значений EGPCS
(Environment, Get, Post, Cookie, Server). Данный флаг
необходим для того, чтобы значения SID передавались с одной
страницы на другую.
25

26.

Конфигурация РНР
register_globals
В результате установки этого флага все переменные EGPCS
становятся доступными глобально. Если нежелательно, чтобы
массив глобальных переменных заполнялся данными, которые
не понадобятся, флаг следует сбросить.
Если флаг register_globals сброшен, а флаг track_vars
установлен, ко всем переменным GPC можно обращаться
через массив $HTTP_*_VARS[]. Например, если сбросить флаг
register_globals, к стандартной переменной $PHP_SELF
придется обращаться в виде
$HTTP_SERVER_VARS["PHP_SELF"].
26

27.

Сеансовые директивы в файле php.ini
session.save_handler = files
Определяет способ хранения сеансовых данных на сервере.
Возможны три варианта: в файле (files), в общей памяти (mm)
или с использованием функций, определяемых пользователем
(User). Последний вариант позволяет легко сохранить
информацию в любом формате — например, в базе данных.
session.save_path =/tmp
Определяет каталог для сеансовых файлов РНР.
На платформе Linux обычно используется значение по
умолчанию ('/tmp').
На платформе Windows следует указать путь к какому-нибудь
каталогу, в противном случае произойдет ошибка.
27

28.

Сеансовые директивы в файле php.ini
session_use_cookies =1
При установке этого флага для сохранения идентификатора
сеанса на компьютере пользователя используются cookie.
session.name =PHPRESSID
Если флаг session.use_cookies установлен, то значение
session.name используется в качестве имени cookie. Имя может
состоять только из алфавитно-цифровых символов.
session.auto_start = 0
При установке флага session.auto_start сеанс автоматически
инициируется при первоначальном запросе со стороны
клиента.
28

29.

Сеансовые директивы в файле php.ini
session.cookie_lifetime = 0
Если флаг session.use_cookies установлен, то значение
session.cookie_lifetime определяет срок действия отправляемых
cookie.
Если параметр равен 0, то все cookie становятся
недействительными при завершении сеанса
session.cookie_path = /
Если флаг session.use_cookies установлен, то значение
session.cookie_path определяет каталог, для которого
отправляемые cookie считаются действительными
session.cookie_domain =
Если флаг session.use_cookies установлен, то значение
session.cookie_domain определяет домен, для которого
отправляемые cookie считаются действительными
29

30.

Сеансовые директивы в файле php.ini
session.serialize_handler = php
Имя обработчика, используемого в процессе сериализации
данных. В настоящее время определены два возможных
значения: php и WDDX.
session.gc_probability =1
Вероятность активизации сборщика мусора РНР (в процентах)
session.gc_maxlifetime=1440
Промежуток времени (в секундах), по истечении которого
данные сеанса считаются недействительными и уничтожаются.
Отсчет начинается с момента последнего обращения
пользователя в текущем сеансе
30

31.

Сеансовые директивы в файле php.ini
session.referer_check =
Если этому параметру присвоено строковое значение, каждый
запрос к странице при включенном отслеживании сеанса
начинается с проверки того, что заданная строка присутствует
в глобальной переменной $HTTP_REFERER. Если строка не
найдена, идентификаторы сеансов игнорируются.
session.enthropy_file =
Ссылка на внешний файл с дополнительной случайной
информацией, используемой при генерации идентификаторов
сеансов. В системах UNIX для этой цели обычно используются
два устройства: /dev/random и /dev/urandom. Устройство
/dev/random получает случайные данные от ядра, а устройство
/dev/urandom генерирует случайную строку при помощи хэшалгоритма М05. Поэтому /dev/random работает быстрее, a
31
/dev/urandom генерирует «более случайные» строки

32.

Сеансовые директивы в файле php.ini
session.enthropy_length = 0
Если флаг session.enthropy_file установлен, то
session.enthropy_length определяет количество байт, читаемых
из файла session.enthropy_file.
session.cache_limiter = nocache
Способ управления кэшем для страниц сеанса. В настоящее
время определены три возможных значения: nocache, public и
private.
session.cache_expire =180
Продолжительность жизни кэшированных страниц сеанса (в
минутах).
32

33.

Функция session_start( )
- имеет двойное назначение: проверяет, начал ли пользователь
новый сеанс, и если нет — начинает его. Синтаксис:
session_start()
- выполняет три операции: назначение пользователю SID,
отправку cookie (если в файле php.ini установлен флаг
session_cookies) и создание файла сеанса на сервере.
- информирует ядро РНР о возможности использования в
сценарии, в котором она была вызвана, сеансовых
переменных.
- возвращает TRUE независимо от результата. Следовательно,
проверять ее в условиях if или в команде die( ) бессмысленно.
33

34.

Функция session_destroy( )
- уничтожает все хранимые данные, относящиеся к сеансу
текущего пользователя. Синтаксис: session_destroy( )
- функция не уничтожает cookie на браузере пользователя.
Пример:
<?
session_start( );
// Выполнить некоторые действия для текущего сеанса
session_destroy( ):
?>
34

35.

Функция session_id( )
- возвращает SID для сеанса, созданного функцией
session_start( ). Синтаксис: session_id ([sid])
Если в необязательном параметре передается идентификатор,
то значение SID текущего сеанса изменяется. При этом cookie
заново не пересылаются.
Пример:
<?
session_start();
print "Идентификатор вашего сеанса ".session_id( );
session_destroy( );
?>
Результат:
35
Идентификатор вашего сеанса 067d992a949114ee9832flcllcafc640

36.

Функция session_register( )
- регистрирует имена одной или нескольких переменных для
текущего сеанса. Синтаксис:
session_register (имя_переменной1 [, имя_переменной2... ])
Если сеанс не существует, функция session_register( ) также
неявно вызывает session_start( ) для создания нового сеанса.
36

37.

Функция session_is_registered( )
- определяет, была ли ранее зарегистрирована переменная с
заданным именем. Синтаксис:
session_is_registered (имя_переменной)
Пример: Счетчик посещений сайта пользователем
<?
session_start( );
if (! session_is_registered('hits')):
session_register( 'hits' );
endif;
$hits++;
print "Вы посетили страницу $hits раз.";
37
?>

38.

Функция session_unregister( )
- сеансовые переменные уничтожаются. Синтаксис:
session_unregister (имя_переменной)
Пример:
<?
session_start()
session_register('username');
// Использовать переменную $username.
...
// Когда переменная становится ненужной - уничтожить ее.
session_unregister('username');
session_destroy();
?>
38

39.

Функция session_encode( )
- обеспечивает чрезвычайно удобную возможность
форматирования сеансовых переменных для хранения
(например, в базе данных). Синтаксис: session_encode( )
В результате выполнения этой функции все сеансовые данные
форматируются в одну длинную строку, которую можно
сохранить в базе данных.
Пример:
<?
session_register('bgcolor');
session_register('fontcolor');
// Переменная $usr_id хранится в cookie на компьютере
пользователя.
$id = session_id($usr_id);
39

40.

Функция session_encode( )
// Значения следующих переменных могут задаваться
пользователем в форме HTML
$bgcolor = "white";
$fontcolor = "blue";
// Преобразовать все сеансовые данные в одну строку
$usr_data = session_encode( );
@mysql_pconnect("localhost", "web", "4tf9zzzf");
@mysql_select_db("users");
// Обновить пользовательские параметры страницы
$query = "UPDATE user_info set page_data='$usr_data' WHERE
user_id= '$id'";
$result = mysql_query($query);
?>
40

41.

Функция session_decode( )
- восстанавливаются все сеансовые данные, ранее
преобразованные в строку функцией session_encode( ).
Синтаксис:
session_decode (сеансовые_данные)
В параметре сеансовые_данные передается преобразованная
строка сеансовых переменных, возможно — прочитанная из
файла или загруженная из базы данных.
Строка восстанавливается, и все сеансовые переменные в
строке преобразуются к исходному формату.
41

42.

Функция session_decode( )
Пример: таблица MySQL с именем user_info состоит из двух полей: user_id и
page_data. Пользовательский UID, хранящийся в cookie на компьютере
пользователя, применяется для загрузки сеансовых данных, хранящихся в
поле page_data. В этом поле хранится закодированная строка переменных,
одна из которых ($bgcolor) содержит цвет фона, выбранный пользователем.
<?
$id = session_id($usr_id);
@mysq]_pconnect("localhost", "web", "4tf9zzzf");
@mysql_select_db("users");
$query = "SELECT page_data FROM user_info WHERE user_id= '$id'",
Sresult = mysql_query($query);
$user_data = mysql_result($result, 0, "page_data");
session_decode($user_data);
print "BGCOLOR: $bgcolor";
?>
42

43.

Функция session_set_save_handler( )
- определяет процедуры сохранения и загрузки сеансовых
данных пользовательского уровня.
Синтаксис:
session_set_save_handler (open, close, read, write, destroy, go)
Шесть параметров соответствуют шести функциям,
вызываемым сеансовыми функциями РНР. Хотя имена этих
функций могут быть произвольными, каждая функция должна
получать жестко заданный набор параметров.
Чтобы использовать функцию session_set_save_handler( ),
необходимо присвоить параметру session.save_handler в
файле php.ini значение user.
43

44.

Функция session_set_save_handler( )
Параметры:
sess_close( )
Вызывается при завершении сценария, в котором реализуются
сеансовые функции. Вызывается без параметров.
sess_destroy($идентификатор_ceaнca)
Удаляет все сеансовые данные. Параметр определяет
удаляемый сеанс.
sess_gc($срок_действия)
Удаляет все сеансы с завершенным сроком действия. Срок
определяется параметром $срок_действия, значение которого
задается в секундах. Параметр читается из файла php.ini и
соответствует значению session.gc_lifetime
44

45.

Функция session_set_save_handler( )
Параметры:
sess_open($путь, $имя)
Вызывается при инициализации нового сеанса функцией
session_start( ) или session_register( ). Два параметра читаются из
файла php.ini и соответствуют значениям session.save_path и
session.name
sess_read($ключ)
Используется для выборки значения сеансовой переменной,
определяемой заданным ключом
sess_write($ключ, $значение)
Используется для сохранения сеансовых данных. Любые данные,
сохраненные функцией sess_write( ), позднее могут быть прочитаны
функцией sess_read( ). Параметр $ключ соответствует имени
сеансовой переменной, а параметр $значение — значению,
45
связываемому с заданным ключом

46.

Функция session_set_save_handler( )
Пример:
<? $host = "localhost";
$user = "web";
$pswd = "4tf9zzzf";
$db = "users";
$session table = "user session data";
$sess_life = get_cfg_var("sess.gc_lifetime");
function mysql_sess_open($save_path. $session_name) {
GLOBAL $host. $user, $pswd, $db;
@mysql_connect($host, $user, $pswd) or die("Can't connect to
MySQL server!");
@mysql_select_db($db) or die("Can't select session database!");
46
}

47.

Функция session_set_save_handler( )
function mysql_sess_close() {
return true;
}
function mysql_sess_read($key) {
GLOBAL $session_table:
$query = "SELECT value FROM $session_table WHERE sess_key
= '$key'";
$result = mysql_query( $query);
if (list($value) = mysql_fetch_row($result)) :
return $value;
endif;
return false;
47
}

48.

Функция session_set_save_handler( )
function mysql_sess_write($key, $val) {
GLOBAL $sess_life, $session_table;
$expiratlon = time() + $sess_life;
$query = "INSERT INTO Ssession_table VALUES('$key',
'$expiration', '$value')";
$result = mysql_query($query);
if (! $result) :
$query = "UPDATE $session_table SET sess_expiration =
'$expiration', sess_value='Svalue'
WHERE sess_key = '$key'"; $result = mysql_query($result);
endif;
}
48

49.

Функция session_set_save_handler( )
function mysql_sess_destroy(Ssess_id) {
GLOBAL $session_table:
$query = "DELETE FROM $session_table WHERE sess_key =
'$sess_id'";
$result = mysql_result($query);
return $result;
}
49

50.

Функция session_set_save_handler( )
function mysql_sess_gc($max_lifetime) {
GLOBAL $session_table;
$query = "DELETE FROM $session_table WHERE sess_expiration <
".time();
$result = mysql_query($query);
return mysql_affected_rows();
}
session_set_save_handler("mysql_sess_open",
"mysql_sess_close","mysql_sess_read", "mysql_sess_write",
"mysql_sess_destroy", "mysql_sess_gc");
?>
После того как эти шесть функций будут зарегистрированы в
программе, их можно вызывать по абстрактным именам (sess_close(
), sess_destroy( ), sess_gc( ), sess_open( ), sess_read( ) или sess_write(
50
)).
English     Русский Правила