Link to home
Start Free TrialLog in
Avatar of drew22
drew22

asked on

unserializing session data without creating new session

I'm trying to create a session browser that will allow me to inspect sessions in my session table.
I found this function somewhere to convert  session data to an array, but it only works with variables in the session, not arrays in the session

function sess_string_to_array($sd)
{
      $sess_array = array();
      $vars = preg_split('/[;}]/', $sd);

      for ($i=0; $i < sizeof($vars); $i++)
      {
            $parts = explode('|', $vars[$i]);
            $key = $parts[0];
            $val = unserialize($parts[1].";");

            $sess_array[$key] = $val;
      }
      
      return $sess_array;
}
ASKER CERTIFIED SOLUTION
Avatar of hernst42
hernst42
Flag of Germany image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of drew22
drew22

ASKER

hernst42:

Didn't work for me.  
I might try http://www.evilwalrus.com/viewcode.php?codeEx=553 , but it is huge, and I can always manually extract arrays via this hard-coded:

      $ar_name = 'completed|'

       $p1 = strpos($sess_data, $ar_name');
      $p2 = strpos($sess_data, ';}',$p1);
      $s= substr($sess_data,$p1+strlen($ar_name),$p2-$p1+2);  
      
        $completed = unserialize($s);
are you using windows? On my linux-box where I tried it, it worked perfect (including an object)
Avatar of drew22

ASKER

I'll try it again.  Did you try it with session data containing arrays?
Yes, I tried it with an objects that contained an array and additional array:
e.g.

sessionreg|s:7:"Orc_RIP";SESSIONID|s:15:"1098978095.8022";RIP|a:3:{s:10:"inputmulti";a:1:{s:4:"link";a:1:{s:6:"params";s:90:"./inputdatamulti.php?cmd=edit&class=Collection&SESSIONID=1098978095.8022&Collection=100109";}}s:6:"brunch";a:2:{s:7:"showall";a:1:{s:6:"PathID";a:2:{i:0;s:8:"03010103";i:1;s:10:"0301010301";}}s:10:"showbranch";a:1:{s:6:"PathID";a:4:{i:0;s:8:"03010103";i:1;s:6:"030101";i:2;s:4:"0301";i:3;s:10:"0301010301";}}}s:9:"DataPoint";a:3:{i:67;a:20:....

var_dump(of that function returned:
array(4) {
  ["sessionreg"]=>
  string(7) "Orc_RIP"
  ["SESSIONID"]=>
  string(15) "1098978095.8022"
  ["RIP"]=>
  array(3) {
    ["inputmulti"]=>
    array(1) {
      ["link"]=>
      array(1) {
        ["params"]=>
        string(90) "./inputdatamulti.php?cmd=edit&class=Collection&SESSIONID=1098978095.8022&Collection=100109"
      }
    }
    ["brunch"]=>
    array(2) {
      ["showall"]=>
      array(1) {
        ["PathID"]=>
        array(2) {
          [0]=>
          string(8) "03010103"
          [1]=>
          string(10) "0301010301"
        }
      }
.....