1--TEST-- 2Test session_decode() function : basic functionality 3--EXTENSIONS-- 4session 5--SKIPIF-- 6<?php include('skipif.inc'); ?> 7--FILE-- 8<?php 9 10ob_start(); 11 12echo "*** Testing session_decode() : basic functionality ***\n"; 13 14// Get an unset variable 15$unset_var = 10; 16unset($unset_var); 17 18class classA 19{ 20 public function __toString() { 21 return "Hello World!"; 22 } 23} 24 25$heredoc = <<<EOT 26Hello World! 27EOT; 28 29$fp = fopen(__FILE__, "r"); 30 31// Unexpected values to be passed as arguments 32$inputs = array( 33 34 // Integer data 35/*1*/ 0, 36 1, 37 12345, 38 -2345, 39 40 // Float data 41/*5*/ 10.5, 42 -10.5, 43 12.3456789000e10, 44 12.3456789000E-10, 45 .5, 46 47 // Null data 48/*10*/ NULL, 49 null, 50 51 // Boolean data 52/*12*/ true, 53 false, 54 TRUE, 55 FALSE, 56 57 // Empty strings 58/*16*/ "", 59 '', 60 61 // Invalid string data 62/*18*/ "Nothing", 63 'Nothing', 64 $heredoc, 65 66 // Object data 67/*21*/ new classA(), 68 69 // Undefined data 70/*22*/ @$undefined_var, 71 72 // Unset data 73/*23*/ @$unset_var, 74 75 // Resource variable 76/*24*/ $fp 77); 78 79ini_set('session.serialize_handler', 'php_serialize'); 80var_dump(session_start()); 81$iterator = 1; 82foreach($inputs as $input) { 83 echo "\n-- Iteration $iterator --\n"; 84 $_SESSION["data"] = $input; 85 $encoded = session_encode(); 86 var_dump(session_decode($encoded)); 87 var_dump($_SESSION); 88 $iterator++; 89}; 90 91var_dump(session_destroy()); 92fclose($fp); 93echo "Done"; 94ob_end_flush(); 95?> 96--EXPECT-- 97*** Testing session_decode() : basic functionality *** 98bool(true) 99 100-- Iteration 1 -- 101bool(true) 102array(1) { 103 ["data"]=> 104 int(0) 105} 106 107-- Iteration 2 -- 108bool(true) 109array(1) { 110 ["data"]=> 111 int(1) 112} 113 114-- Iteration 3 -- 115bool(true) 116array(1) { 117 ["data"]=> 118 int(12345) 119} 120 121-- Iteration 4 -- 122bool(true) 123array(1) { 124 ["data"]=> 125 int(-2345) 126} 127 128-- Iteration 5 -- 129bool(true) 130array(1) { 131 ["data"]=> 132 float(10.5) 133} 134 135-- Iteration 6 -- 136bool(true) 137array(1) { 138 ["data"]=> 139 float(-10.5) 140} 141 142-- Iteration 7 -- 143bool(true) 144array(1) { 145 ["data"]=> 146 float(123456789000) 147} 148 149-- Iteration 8 -- 150bool(true) 151array(1) { 152 ["data"]=> 153 float(1.23456789E-9) 154} 155 156-- Iteration 9 -- 157bool(true) 158array(1) { 159 ["data"]=> 160 float(0.5) 161} 162 163-- Iteration 10 -- 164bool(true) 165array(1) { 166 ["data"]=> 167 NULL 168} 169 170-- Iteration 11 -- 171bool(true) 172array(1) { 173 ["data"]=> 174 NULL 175} 176 177-- Iteration 12 -- 178bool(true) 179array(1) { 180 ["data"]=> 181 bool(true) 182} 183 184-- Iteration 13 -- 185bool(true) 186array(1) { 187 ["data"]=> 188 bool(false) 189} 190 191-- Iteration 14 -- 192bool(true) 193array(1) { 194 ["data"]=> 195 bool(true) 196} 197 198-- Iteration 15 -- 199bool(true) 200array(1) { 201 ["data"]=> 202 bool(false) 203} 204 205-- Iteration 16 -- 206bool(true) 207array(1) { 208 ["data"]=> 209 string(0) "" 210} 211 212-- Iteration 17 -- 213bool(true) 214array(1) { 215 ["data"]=> 216 string(0) "" 217} 218 219-- Iteration 18 -- 220bool(true) 221array(1) { 222 ["data"]=> 223 string(7) "Nothing" 224} 225 226-- Iteration 19 -- 227bool(true) 228array(1) { 229 ["data"]=> 230 string(7) "Nothing" 231} 232 233-- Iteration 20 -- 234bool(true) 235array(1) { 236 ["data"]=> 237 string(12) "Hello World!" 238} 239 240-- Iteration 21 -- 241bool(true) 242array(1) { 243 ["data"]=> 244 object(classA)#2 (0) { 245 } 246} 247 248-- Iteration 22 -- 249bool(true) 250array(1) { 251 ["data"]=> 252 NULL 253} 254 255-- Iteration 23 -- 256bool(true) 257array(1) { 258 ["data"]=> 259 NULL 260} 261 262-- Iteration 24 -- 263bool(true) 264array(1) { 265 ["data"]=> 266 int(0) 267} 268bool(true) 269Done 270