????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 216.73.216.238 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/self/root/home/b8009/php-5.6.22/ext/standard/tests/serialize/ |
Upload File : |
--TEST-- serialize()/unserialize() objects --SKIPIF-- <?php if (!interface_exists('Serializable')) die('skip Interface Serialzable not defined'); ?> --FILE-- <?php // This test verifies that old and new style (un)serializing do not interfere. function do_autoload($class_name) { if ($class_name != 'autoload_not_available') { require_once(dirname(__FILE__) . '/' . strtolower($class_name) . '.p5c'); } echo __FUNCTION__ . "($class_name)\n"; } function unserializer($class_name) { echo __METHOD__ . "($class_name)\n"; switch($class_name) { case 'TestNAOld': eval("class TestNAOld extends TestOld {}"); break; case 'TestNANew': eval("class TestNANew extends TestNew {}"); break; case 'TestNANew2': eval("class TestNANew2 extends TestNew {}"); break; default: echo "Try __autoload()\n"; if (!function_exists('__autoload')) { eval('function __autoload($class_name) { do_autoload($class_name); }'); } __autoload($class_name); break; } } ini_set('unserialize_callback_func', 'unserializer'); class TestOld { function serialize() { echo __METHOD__ . "()\n"; } function unserialize($serialized) { echo __METHOD__ . "()\n"; } function __wakeup() { echo __METHOD__ . "()\n"; } function __sleep() { echo __METHOD__ . "()\n"; return array(); } } class TestNew implements Serializable { protected static $check = 0; function serialize() { echo __METHOD__ . "()\n"; switch(++self::$check) { case 1: return NULL; case 2: return "2"; } } function unserialize($serialized) { echo __METHOD__ . "()\n"; } function __wakeup() { echo __METHOD__ . "()\n"; } function __sleep() { echo __METHOD__ . "()\n"; } } echo "===O1===\n"; var_dump($ser = serialize(new TestOld)); var_dump(unserialize($ser)); echo "===N1===\n"; var_dump($ser = serialize(new TestNew)); var_dump(unserialize($ser)); echo "===N2===\n"; var_dump($ser = serialize(new TestNew)); var_dump(unserialize($ser)); echo "===NAOld===\n"; var_dump(unserialize('O:9:"TestNAOld":0:{}')); echo "===NANew===\n"; var_dump(unserialize('O:9:"TestNANew":0:{}')); echo "===NANew2===\n"; var_dump(unserialize('C:10:"TestNANew2":0:{}')); echo "===AutoOld===\n"; var_dump(unserialize('O:19:"autoload_implements":0:{}')); // Now we have __autoload(), that will be called before the old style header. // If the old style handler also fails to register the class then the object // becomes an incomplete class instance. echo "===AutoNA===\n"; var_dump(unserialize('O:22:"autoload_not_available":0:{}')); ?> ===DONE=== <?php exit(0); ?> --EXPECTF-- ===O1=== TestOld::__sleep() string(18) "O:7:"TestOld":0:{}" TestOld::__wakeup() object(TestOld)#%d (0) { } ===N1=== TestNew::serialize() string(2) "N;" NULL ===N2=== TestNew::serialize() string(19) "C:7:"TestNew":1:{2}" TestNew::unserialize() object(TestNew)#%d (0) { } ===NAOld=== unserializer(TestNAOld) TestOld::__wakeup() object(TestNAOld)#%d (0) { } ===NANew=== unserializer(TestNANew) Warning: Erroneous data format for unserializing 'TestNANew' in %s005.php on line %d Notice: unserialize(): Error at offset 19 of 20 bytes in %s005.php on line %d bool(false) ===NANew2=== unserializer(TestNANew2) TestNew::unserialize() object(TestNANew2)#%d (0) { } ===AutoOld=== unserializer(autoload_implements) Try __autoload() do_autoload(autoload_interface) do_autoload(autoload_implements) object(autoload_implements)#%d (0) { } ===AutoNA=== do_autoload(autoload_not_available) unserializer(autoload_not_available) Try __autoload() do_autoload(autoload_not_available) do_autoload(autoload_not_available) Warning: unserialize(): Function unserializer() hasn't defined the class it was called for in %s005.php on line %d object(__PHP_Incomplete_Class)#%d (1) { ["__PHP_Incomplete_Class_Name"]=> string(22) "autoload_not_available" } ===DONE===