Приведенный ниже код будет работать, это не мое, но по сути то, что он делает, это разбивает строку сеанса на части, используя канал в качестве разделителя, и десериализует разделенные фрагменты индивидуально.
Проблема в том, чтовстроенная функция unserialize в php не понимает составную сериализацию.
function unserialize_session_data( $serialized_string ) {
$variables = array();
$a = preg_split("/(\w+)\|/", $serialized_string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
for($i=0;$i<count($a);$i=$i+2){
$variables[$a[$i]] = unserialize($a[$i+1]);
}
return($variables);
}