Какая сериализация использует функцию PHP функции session_set_save_handler?

Я использую session_set_save_handler (). Он работает нормально. Однако иногда мне нужно изменить данные сеанса пользователя. Я просто ожидал, что данные сеанса, переданные функции записи, внутренне созданы следующим образом:

serialize($_SESSION); 

Но это не так. Они имеют этот немного другой формат, чем простые сериализованные данные PHP:

 user|a:24:{s:2:"id";s:2:"12";s:5:"email";s:19:...CUT...;}last_activity_time|i:1310535031;logged_everywhere|b:1; 

Кто-нибудь знает, какая сериализация внутренне используется для сериализации данных $ _SESSION для функции записи в session_set_save_handler ()? Или еще лучше, если есть некоторая функция несериализации и сериализации, которую я могу использовать для работы с этими данными?

Пожалуйста, взгляните на PHP-Dokumentation для session_decode и session_encode . Вы найдете полные выборки для несериализации и сериализации строк сеанса в комментариях.

вот мои 2 цента по этой проблеме с внутренним сериализатором php. он не может анализироваться отдельно от сеанса пользователя. Поэтому, когда я использовал session_set_save_handler (), поэтому я могу сохранить данные сеанса в базе данных и внутри своего метода записи, я могу получить доступ к объекту $ _SESSION, таким образом, я могу сохранить сериализованный объект $ _SESSION в свою базу данных, затем прочитать или изменить это там. Единственным недостатком является то, что если он будет изменен, он не будет модификацией внутренних данных сеанса, используемых php.

Это, по крайней мере, дает вам возможность синтаксического доступа к данным сеанса текущего пользователя, хотя и не к объекту.

 function _write($id, $data) { if ($data == "") { return true; } global $database_connection; global $table_prefix; $clean_data = base64_encode(serialize($_SESSION)); $access = time(); $id = mysql_real_escape_string($id); $access = mysql_real_escape_string($access); $data = base64_encode($data); $sql = "REPLACE INTO " . $table_prefix . "sessions VALUES ('$id', '$access', '$data', '$clean_data')"; return mysql_query($sql, $database_connection); }