File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / session / tests / 005.phpt
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 12:34:42 2012 UTC (12 years, 1 month ago) by misho
Branches: php, MAIN
CVS tags: v5_4_3elwix, v5_4_29p0, v5_4_29, v5_4_20p0, v5_4_20, v5_4_17p0, v5_4_17, HEAD
php 5.4.3+patches

    1: --TEST--
    2: custom save handler, multiple session_start()s, complex data structure test.
    3: --SKIPIF--
    4: <?php include('skipif.inc'); ?>
    5: --INI--
    6: session.use_cookies=0
    7: session.cache_limiter=
    8: session.name=PHPSESSID
    9: session.serialize_handler=php
   10: --FILE--
   11: <?php
   12: 
   13: error_reporting(E_ALL);
   14: 
   15: class handler {
   16: 	public $data = 'baz|O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}arr|a:1:{i:3;O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}}';
   17:     function open($save_path, $session_name)
   18:     {
   19:         print "OPEN: $session_name\n";
   20:         return true;
   21:     }
   22:     function close()
   23:     {
   24: 		print "CLOSE\n";
   25:         return true;
   26:     }
   27:     function read($key)
   28:     {
   29:         print "READ: $key\n";
   30:         return $GLOBALS["hnd"]->data;
   31:     }
   32: 
   33:     function write($key, $val)
   34:     {
   35:         print "WRITE: $key, $val\n";
   36: 		$GLOBALS["hnd"]->data = $val;
   37:         return true;
   38:     }
   39: 
   40:     function destroy($key)
   41:     {
   42:         print "DESTROY: $key\n";
   43:         return true;
   44:     }
   45: 
   46:     function gc() { return true; }
   47: }
   48: 
   49: $hnd = new handler;
   50: 
   51: class foo {
   52:     public $bar = "ok";
   53:     function method() { $this->yes++; }
   54: }
   55: 
   56: session_set_save_handler(array($hnd, "open"), array($hnd, "close"), array($hnd, "read"), array($hnd, "write"), array($hnd, "destroy"), array($hnd, "gc"));
   57: 
   58: session_id("abtest");
   59: session_start();
   60: session_decode($hnd->data);
   61: 
   62: $_SESSION["baz"]->method();
   63: $_SESSION["arr"][3]->method();
   64: 
   65: var_dump($_SESSION["baz"]);
   66: var_dump($_SESSION["arr"]);
   67: 
   68: session_write_close();
   69: 
   70: session_set_save_handler(array($hnd, "open"), array($hnd, "close"), array($hnd, "read"), array($hnd, "write"), array($hnd, "destroy"), array($hnd, "gc"));
   71: session_start();
   72: $_SESSION["baz"]->method();
   73: $_SESSION["arr"][3]->method();
   74: 
   75: 
   76: $_SESSION["c"] = 123;
   77: var_dump($_SESSION["baz"]);
   78: var_dump($_SESSION["arr"]);
   79: var_dump($_SESSION["c"]);
   80: 
   81: session_write_close();
   82: 
   83: session_set_save_handler(array($hnd, "open"), array($hnd, "close"), array($hnd, "read"), array($hnd, "write"), array($hnd, "destroy"), array($hnd, "gc"));
   84: session_start();
   85: var_dump($_SESSION["baz"]);
   86: var_dump($_SESSION["arr"]);
   87: var_dump($_SESSION["c"]);
   88: 
   89: session_destroy();
   90: ?>
   91: --EXPECTF--
   92: OPEN: PHPSESSID
   93: READ: abtest
   94: object(foo)#4 (2) {
   95:   ["bar"]=>
   96:   string(2) "ok"
   97:   ["yes"]=>
   98:   int(2)
   99: }
  100: array(1) {
  101:   [3]=>
  102:   object(foo)#2 (2) {
  103:     ["bar"]=>
  104:     string(2) "ok"
  105:     ["yes"]=>
  106:     int(2)
  107:   }
  108: }
  109: WRITE: abtest, baz|O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:2;}arr|a:1:{i:3;O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:2;}}
  110: CLOSE
  111: OPEN: PHPSESSID
  112: READ: abtest
  113: object(foo)#2 (2) {
  114:   ["bar"]=>
  115:   string(2) "ok"
  116:   ["yes"]=>
  117:   int(3)
  118: }
  119: array(1) {
  120:   [3]=>
  121:   object(foo)#4 (2) {
  122:     ["bar"]=>
  123:     string(2) "ok"
  124:     ["yes"]=>
  125:     int(3)
  126:   }
  127: }
  128: int(123)
  129: WRITE: abtest, baz|O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:3;}arr|a:1:{i:3;O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:3;}}c|i:123;
  130: CLOSE
  131: OPEN: PHPSESSID
  132: READ: abtest
  133: object(foo)#4 (2) {
  134:   ["bar"]=>
  135:   string(2) "ok"
  136:   ["yes"]=>
  137:   int(3)
  138: }
  139: array(1) {
  140:   [3]=>
  141:   object(foo)#2 (2) {
  142:     ["bar"]=>
  143:     string(2) "ok"
  144:     ["yes"]=>
  145:     int(3)
  146:   }
  147: }
  148: int(123)
  149: DESTROY: abtest
  150: CLOSE
  151: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>