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 79var_dump(session_start()); 80$iterator = 1; 81foreach($inputs as $input) { 82 echo "\n-- Iteration $iterator --\n"; 83 $_SESSION["data"] = $input; 84 $encoded = session_encode(); 85 var_dump(session_decode($encoded)); 86 var_dump($_SESSION); 87 $iterator++; 88}; 89 90var_dump(session_destroy()); 91fclose($fp); 92echo "Done"; 93ob_end_flush(); 94?> 95--EXPECT-- 96*** Testing session_decode() : basic functionality *** 97bool(true) 98 99-- Iteration 1 -- 100bool(true) 101array(1) { 102 ["data"]=> 103 int(0) 104} 105 106-- Iteration 2 -- 107bool(true) 108array(1) { 109 ["data"]=> 110 int(1) 111} 112 113-- Iteration 3 -- 114bool(true) 115array(1) { 116 ["data"]=> 117 int(12345) 118} 119 120-- Iteration 4 -- 121bool(true) 122array(1) { 123 ["data"]=> 124 int(-2345) 125} 126 127-- Iteration 5 -- 128bool(true) 129array(1) { 130 ["data"]=> 131 float(10.5) 132} 133 134-- Iteration 6 -- 135bool(true) 136array(1) { 137 ["data"]=> 138 float(-10.5) 139} 140 141-- Iteration 7 -- 142bool(true) 143array(1) { 144 ["data"]=> 145 float(123456789000) 146} 147 148-- Iteration 8 -- 149bool(true) 150array(1) { 151 ["data"]=> 152 float(1.23456789E-9) 153} 154 155-- Iteration 9 -- 156bool(true) 157array(1) { 158 ["data"]=> 159 float(0.5) 160} 161 162-- Iteration 10 -- 163bool(true) 164array(1) { 165 ["data"]=> 166 NULL 167} 168 169-- Iteration 11 -- 170bool(true) 171array(1) { 172 ["data"]=> 173 NULL 174} 175 176-- Iteration 12 -- 177bool(true) 178array(1) { 179 ["data"]=> 180 bool(true) 181} 182 183-- Iteration 13 -- 184bool(true) 185array(1) { 186 ["data"]=> 187 bool(false) 188} 189 190-- Iteration 14 -- 191bool(true) 192array(1) { 193 ["data"]=> 194 bool(true) 195} 196 197-- Iteration 15 -- 198bool(true) 199array(1) { 200 ["data"]=> 201 bool(false) 202} 203 204-- Iteration 16 -- 205bool(true) 206array(1) { 207 ["data"]=> 208 string(0) "" 209} 210 211-- Iteration 17 -- 212bool(true) 213array(1) { 214 ["data"]=> 215 string(0) "" 216} 217 218-- Iteration 18 -- 219bool(true) 220array(1) { 221 ["data"]=> 222 string(7) "Nothing" 223} 224 225-- Iteration 19 -- 226bool(true) 227array(1) { 228 ["data"]=> 229 string(7) "Nothing" 230} 231 232-- Iteration 20 -- 233bool(true) 234array(1) { 235 ["data"]=> 236 string(12) "Hello World!" 237} 238 239-- Iteration 21 -- 240bool(true) 241array(1) { 242 ["data"]=> 243 object(classA)#2 (0) { 244 } 245} 246 247-- Iteration 22 -- 248bool(true) 249array(1) { 250 ["data"]=> 251 NULL 252} 253 254-- Iteration 23 -- 255bool(true) 256array(1) { 257 ["data"]=> 258 NULL 259} 260 261-- Iteration 24 -- 262bool(true) 263array(1) { 264 ["data"]=> 265 int(0) 266} 267bool(true) 268Done 269