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