Сессии, ключ обращения

leosun

Новичок
Сессии, ключ обращения

Собственно есть вопрос:
1. использую session_set_save_handler('_open', '_close', '_read', '_write', '_destroy', '_clean');
2. устанавливаю свою _write

PHP:
	function _write($id, $data){
	  global $db_con;
	  $access = time();
	  $data = mysql_real_escape_string($data);
	  $sql = "REPLACE INTO sessions VALUES ('$id','$access','$data')";
	  return mysql_query($sql, $db_con);
	}
Мне нужно узнать по какому ключу
$_SESSION['какой-то ключ'] = 'value'
была вызвана _write, или это нереально?
 

leosun

Новичок
Автор оригинала: DiMA
ты считаешь, что при команде
$_SESSION['какой-то ключ'] = 'value'
будет вызвана твоя функция?

Почитай, подумай.

http://ru.php.net/manual/ru/function.session-set-save-handler.php
Отвечаю, при команде

$_SESSION['какой-то ключ'] = 'value';

происходит перехват обработчика сессий, и вызывается МОЯ функция, в данно случае это будет _write, т.к. произойдет запись сессии в базу данных, интересует есть ли способ определить по какому ключу была вызвана функция записи.
 

leosun

Новичок
Автор оригинала: *****
странно. а где там такое написано?
session_set_save_handler() устанавливает пользовательские функции хранения сессии, которые используются для хранения и запрашивания данных, ассоциированных с сессией.
 

Фанат

oncle terrible
Команда форума
ну тебя же не про хранение спрашивают, а про $_SESSION['какой-то ключ'] = 'value';
 

leosun

Новичок
При записи данных в глобальную переменную SESSION, при установленных пользовательских функциях, что будет происходить при такой команде?

$_SESSION['vsadv'] = 'asdfsadfsaf';

Я думаю что будет инициирован вызов функции _write, т.к. данные сессии изменились и требуется обновить хранилище сессии.
 

Farsh

~ on ~ high ~ wave ~
leosun
Смею предположить, что никакой вызов не будет инициирован ;) В данном случае вы просто обновили массив $_SESSION, а данные в сериализованном виде запишутся либо в конце работы скрипта, либо при вызове session_write_close();
 

leosun

Новичок
Автор оригинала: Farsh
leosun
Смею предположить, что никакой вызов не будет инициирован ;) В данном случае вы просто обновили массив $_SESSION, а данные в сериализованном виде запишутся либо в конце работы скрипта, либо при вызове session_write_close();
Спасибо, не знал этого! Т.е. тогда ответ на ворос очивиден - это нереально ))
 
Сверху