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