1
0
mirror of https://github.com/php/php-src.git synced 2026-04-28 10:43:30 +02:00
Files

181 lines
5.6 KiB
PHP

--TEST--
Test serialization and unserialization
--EXTENSIONS--
uri
--FILE--
<?php
$uri1 = new Uri\Rfc3986\Uri("https://username:password@www.example.com:8080/pathname1/pathname2/pathname3?query=true#hash-exists");
$serializedUri1 = serialize($uri1);
$uri2 = unserialize($serializedUri1);
var_dump($serializedUri1);
var_dump($uri2);
try {
unserialize('O:15:"Uri\Rfc3986\Uri":1:{i:0;a:0:{}}'); // less than 2 items
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
try {
unserialize('O:15:"Uri\Rfc3986\Uri":3:{i:0;a:0:{}i:1;a:0:{}i:2;a:0:{}}'); // more than 2 items
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
try {
unserialize('O:15:"Uri\Rfc3986\Uri":2:{i:0;N;i:1;a:0:{}}'); // first item is not an array
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
try {
unserialize('O:15:"Uri\Rfc3986\Uri":2:{i:0;a:0:{}i:1;a:0:{}}'); // first array is empty
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
try {
unserialize('O:15:"Uri\Rfc3986\Uri":2:{i:0;a:1:{s:3:"uri";i:1;}i:1;a:0:{}}'); // "uri" key in first array is not a string
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
try {
unserialize('O:15:"Uri\Rfc3986\Uri":2:{i:0;a:1:{s:3:"uri";s:2:"%1";}i:1;a:0:{}}'); // "uri" key in first array contains invalid URI
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
try {
unserialize('O:15:"Uri\Rfc3986\Uri":2:{i:0;a:1:{s:3:"uri";s:4:"/uri";}i:1;s:0:"";}'); // second item in not an array
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
try {
unserialize('O:15:"Uri\Rfc3986\Uri":2:{i:0;a:1:{s:3:"uri";s:4:"/uri";}i:1;a:1:{s:5:"prop1";i:123;}}'); // second array contains a property
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
$url1 = new Uri\WhatWg\Url("https://username:password@www.example.com:8080/pathname1/pathname2/pathname3?query=true#hash-exists");
$serializedUrl1 = serialize($url1);
$url2 = unserialize($serializedUrl1);
var_dump($serializedUrl1);
var_dump($url2);
try {
unserialize('O:14:"Uri\WhatWg\Url":1:{i:0;a:0:{}}'); // less than 2 items
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
try {
unserialize('O:14:"Uri\WhatWg\Url":3:{i:0;a:0:{}i:1;a:0:{}i:2;a:0:{}}'); // more than 2 items
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
try {
unserialize('O:14:"Uri\WhatWg\Url":2:{i:0;N;i:1;a:0:{}}'); // first item is not an array
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
try {
unserialize('O:14:"Uri\WhatWg\Url":2:{i:0;a:0:{}i:1;a:0:{}}'); // first array is empty
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
try {
unserialize('O:14:"Uri\WhatWg\Url":2:{i:0;a:2:{s:3:"uri";s:19:"https://example.com";s:1:"a";i:1;}i:1;a:0:{}}'); // "uri" key in first array contains more than 1 item
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
try {
unserialize('O:14:"Uri\WhatWg\Url":2:{i:0;a:1:{s:3:"uri";i:1;}i:1;a:0:{}}'); // "uri" key in first array is not a string
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
try {
unserialize('O:14:"Uri\WhatWg\Url":2:{i:0;a:1:{s:3:"uri";s:11:"invalid-url";}i:1;a:0:{}}'); // "uri" key in first array contains invalid URL
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
try {
unserialize('O:14:"Uri\WhatWg\Url":2:{i:0;a:1:{s:3:"uri";s:19:"https://example.com";}i:1;s:0:"";}'); // second item in not an array
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
try {
unserialize('O:14:"Uri\WhatWg\Url":2:{i:0;a:1:{s:3:"uri";s:19:"https://example.com";}i:1;a:1:{s:5:"prop1";i:123;}}'); // second array contains property
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
?>
--EXPECTF--
string(164) "O:15:"Uri\Rfc3986\Uri":2:{i:0;a:1:{s:3:"uri";s:99:"https://username:password@www.example.com:8080/pathname1/pathname2/pathname3?query=true#hash-exists";}i:1;a:0:{}}"
object(Uri\Rfc3986\Uri)#%d (%d) {
["scheme"]=>
string(5) "https"
["username"]=>
string(8) "username"
["password"]=>
string(8) "password"
["host"]=>
string(15) "www.example.com"
["port"]=>
int(8080)
["path"]=>
string(30) "/pathname1/pathname2/pathname3"
["query"]=>
string(10) "query=true"
["fragment"]=>
string(11) "hash-exists"
}
Invalid serialization data for Uri\Rfc3986\Uri object
Invalid serialization data for Uri\Rfc3986\Uri object
Invalid serialization data for Uri\Rfc3986\Uri object
Invalid serialization data for Uri\Rfc3986\Uri object
Invalid serialization data for Uri\Rfc3986\Uri object
Invalid serialization data for Uri\Rfc3986\Uri object
Invalid serialization data for Uri\Rfc3986\Uri object
Invalid serialization data for Uri\Rfc3986\Uri object
string(163) "O:14:"Uri\WhatWg\Url":2:{i:0;a:1:{s:3:"uri";s:99:"https://username:password@www.example.com:8080/pathname1/pathname2/pathname3?query=true#hash-exists";}i:1;a:0:{}}"
object(Uri\WhatWg\Url)#%d (%d) {
["scheme"]=>
string(5) "https"
["username"]=>
string(8) "username"
["password"]=>
string(8) "password"
["host"]=>
string(15) "www.example.com"
["port"]=>
int(8080)
["path"]=>
string(30) "/pathname1/pathname2/pathname3"
["query"]=>
string(10) "query=true"
["fragment"]=>
string(11) "hash-exists"
}
Invalid serialization data for Uri\WhatWg\Url object
Invalid serialization data for Uri\WhatWg\Url object
Invalid serialization data for Uri\WhatWg\Url object
Invalid serialization data for Uri\WhatWg\Url object
Invalid serialization data for Uri\WhatWg\Url object
Invalid serialization data for Uri\WhatWg\Url object
Invalid serialization data for Uri\WhatWg\Url object
Invalid serialization data for Uri\WhatWg\Url object
Invalid serialization data for Uri\WhatWg\Url object