diff options
Diffstat (limited to 'ext/filter/tests')
82 files changed, 3041 insertions, 0 deletions
diff --git a/ext/filter/tests/001.phpt b/ext/filter/tests/001.phpt new file mode 100644 index 0000000..2755a57 --- /dev/null +++ b/ext/filter/tests/001.phpt @@ -0,0 +1,8 @@ +--TEST-- +Simple GET test +--GET-- +a=1 +--FILE-- +<?php echo $_GET['a']; ?> +--EXPECT-- +1 diff --git a/ext/filter/tests/002.phpt b/ext/filter/tests/002.phpt new file mode 100644 index 0000000..7136b25 --- /dev/null +++ b/ext/filter/tests/002.phpt @@ -0,0 +1,11 @@ +--TEST-- +GET test with 2 values and an empty one +--GET-- +a=1&b=&c=3 +--FILE-- +<?php echo $_GET['a']; +echo $_GET['b']; +echo $_GET['c']; +?> +--EXPECT-- +13 diff --git a/ext/filter/tests/003.phpt b/ext/filter/tests/003.phpt new file mode 100644 index 0000000..43e6cd9 --- /dev/null +++ b/ext/filter/tests/003.phpt @@ -0,0 +1,22 @@ +--TEST-- +GET/POST/REQUEST Test +--POST-- +d=4&e=5 +--GET-- +a=1&b=&c=3 +--FILE-- +<?php echo $_GET['a']; +echo $_GET['b']; +echo $_GET['c']; +echo $_POST['d']; +echo $_POST['e']; +echo "\n"; +echo $_REQUEST['a']; +echo $_REQUEST['b']; +echo $_REQUEST['c']; +echo $_REQUEST['d']; +echo $_REQUEST['e']; +?> +--EXPECT-- +1345 +1345 diff --git a/ext/filter/tests/004.phpt b/ext/filter/tests/004.phpt new file mode 100644 index 0000000..b899124 --- /dev/null +++ b/ext/filter/tests/004.phpt @@ -0,0 +1,26 @@ +--TEST-- +GET/POST/REQUEST Test with filtered data +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--INI-- +filter.default=special_chars +--POST-- +d="quotes"&e=\slash +--GET-- +a=O'Henry&b=&c=<b>Bold</b> +--FILE-- +<?php echo $_GET['a']; +echo $_GET['b']; +echo $_GET['c']; +echo $_POST['d']; +echo $_POST['e']; +echo "\n"; +echo $_REQUEST['a']; +echo $_REQUEST['b']; +echo $_REQUEST['c']; +echo $_REQUEST['d']; +echo $_REQUEST['e']; +?> +--EXPECT-- +O'Henry<b>Bold</b>"quotes"\slash +O'Henry<b>Bold</b>"quotes"\slash diff --git a/ext/filter/tests/005.phpt b/ext/filter/tests/005.phpt new file mode 100644 index 0000000..b3735f5 --- /dev/null +++ b/ext/filter/tests/005.phpt @@ -0,0 +1,23 @@ +--TEST-- +GET/REQUEST Test with fifa example data +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--INI-- +filter.default=stripped +--GET-- +id=f03_photos&pgurl=http%3A//fifaworldcup.yahoo.com/03/en/photozone/index.html +--FILE-- +<?php +echo $_GET['id']; +echo "\n"; +echo $_GET['pgurl']; +echo "\n"; +echo $_REQUEST['id']; +echo "\n"; +echo $_REQUEST['pgurl']; +?> +--EXPECT-- +f03_photos +http://fifaworldcup.yahoo.com/03/en/photozone/index.html +f03_photos +http://fifaworldcup.yahoo.com/03/en/photozone/index.html diff --git a/ext/filter/tests/006.phpt b/ext/filter/tests/006.phpt new file mode 100644 index 0000000..9439e47 --- /dev/null +++ b/ext/filter/tests/006.phpt @@ -0,0 +1,12 @@ +--TEST-- +filter() test +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--POST-- +foo=<b>abc</b> +--FILE-- +<?php +echo filter_input(INPUT_POST, 'foo', FILTER_SANITIZE_STRIPPED); +?> +--EXPECT-- +abc diff --git a/ext/filter/tests/007.phpt b/ext/filter/tests/007.phpt new file mode 100644 index 0000000..96e0b5f --- /dev/null +++ b/ext/filter/tests/007.phpt @@ -0,0 +1,64 @@ +--TEST-- +filter_has_var() +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--GET-- +a=qwe&abc=<a>href</a> +--POST-- +b=qwe&bbc=<a>href</a> +--FILE-- +<?php + +var_dump(filter_has_var(INPUT_GET, "a")); +var_dump(filter_has_var(INPUT_GET, "abc")); +var_dump(filter_has_var(INPUT_GET, "nonex")); +var_dump(filter_has_var(INPUT_GET, " ")); +var_dump(filter_has_var(INPUT_GET, "")); +var_dump(filter_has_var(INPUT_GET, array())); + +var_dump(filter_has_var(INPUT_POST, "b")); +var_dump(filter_has_var(INPUT_POST, "bbc")); +var_dump(filter_has_var(INPUT_POST, "nonex")); +var_dump(filter_has_var(INPUT_POST, " ")); +var_dump(filter_has_var(INPUT_POST, "")); +var_dump(filter_has_var(INPUT_POST, array())); + +var_dump(filter_has_var(-1, "")); +var_dump(filter_has_var("", "")); +var_dump(filter_has_var(array(), array())); +var_dump(filter_has_var(array(), "")); +var_dump(filter_has_var("", array())); + +echo "Done\n"; +?> +--EXPECTF-- +bool(true) +bool(true) +bool(false) +bool(false) +bool(false) + +Warning: filter_has_var() expects parameter 2 to be string, array given in %s007.php on line %d +bool(false) +bool(true) +bool(true) +bool(false) +bool(false) +bool(false) + +Warning: filter_has_var() expects parameter 2 to be string, array given in %s007.php on line %d +bool(false) +bool(false) + +Warning: filter_has_var() expects parameter 1 to be long, string given in %s007.php on line %d +bool(false) + +Warning: filter_has_var() expects parameter 1 to be long, array given in %s007.php on line %d +bool(false) + +Warning: filter_has_var() expects parameter 1 to be long, array given in %s007.php on line %d +bool(false) + +Warning: filter_has_var() expects parameter 1 to be long, string given in %s007.php on line %d +bool(false) +Done diff --git a/ext/filter/tests/008.phpt b/ext/filter/tests/008.phpt new file mode 100644 index 0000000..8a43405 --- /dev/null +++ b/ext/filter/tests/008.phpt @@ -0,0 +1,57 @@ +--TEST-- +filter_list() +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +var_dump(filter_list()); +var_dump(filter_list(array())); + +echo "Done\n"; +?> +--EXPECTF-- +array(19) { + [0]=> + string(3) "int" + [1]=> + string(7) "boolean" + [2]=> + string(5) "float" + [3]=> + string(15) "validate_regexp" + [4]=> + string(12) "validate_url" + [5]=> + string(14) "validate_email" + [6]=> + string(11) "validate_ip" + [7]=> + string(6) "string" + [8]=> + string(8) "stripped" + [9]=> + string(7) "encoded" + [10]=> + string(13) "special_chars" + [11]=> + string(18) "full_special_chars" + [12]=> + string(10) "unsafe_raw" + [13]=> + string(5) "email" + [14]=> + string(3) "url" + [15]=> + string(10) "number_int" + [16]=> + string(12) "number_float" + [17]=> + string(12) "magic_quotes" + [18]=> + string(8) "callback" +} + +Warning: filter_list() expects exactly 0 parameters, 1 given in %s on line %d +NULL +Done diff --git a/ext/filter/tests/009.phpt b/ext/filter/tests/009.phpt new file mode 100644 index 0000000..d09f996 --- /dev/null +++ b/ext/filter/tests/009.phpt @@ -0,0 +1,32 @@ +--TEST-- +filter_id() +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +var_dump(filter_id("stripped")); +var_dump(filter_id("string")); +var_dump(filter_id("url")); +var_dump(filter_id("int")); +var_dump(filter_id("none")); +var_dump(filter_id(array())); +var_dump(filter_id(-1)); +var_dump(filter_id(0,0,0)); + +echo "Done\n"; +?> +--EXPECTF-- +int(513) +int(513) +int(518) +int(257) +bool(false) + +Warning: filter_id() expects parameter 1 to be string, array given in %s on line %d +NULL +bool(false) + +Warning: filter_id() expects exactly 1 parameter, 3 given in %s on line %d +NULL +Done diff --git a/ext/filter/tests/010.phpt b/ext/filter/tests/010.phpt new file mode 100644 index 0000000..e868c10 --- /dev/null +++ b/ext/filter/tests/010.phpt @@ -0,0 +1,64 @@ +--TEST-- +filter_var() +--INI-- +precision=14 +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +var_dump(filter_var(array(1,"1","", "-23234", "text", "asdf234asdfgs", array()), FILTER_VALIDATE_INT, FILTER_REQUIRE_ARRAY)); +var_dump(filter_var(array(1.2,"1.7","", "-23234.123", "text", "asdf234.2asdfgs", array()), FILTER_VALIDATE_FLOAT, FILTER_REQUIRE_ARRAY)); +var_dump(filter_var(1, array())); +var_dump(filter_var(1, FILTER_SANITIZE_STRING, 1)); +var_dump(filter_var(1, FILTER_SANITIZE_STRING, 0)); +var_dump(filter_var(1, FILTER_SANITIZE_STRING, array())); +var_dump(filter_var(1, -1, array(123))); +var_dump(filter_var(1, 0, array())); + +echo "Done\n"; +?> +--EXPECTF-- +array(7) { + [0]=> + int(1) + [1]=> + int(1) + [2]=> + bool(false) + [3]=> + int(-23234) + [4]=> + bool(false) + [5]=> + bool(false) + [6]=> + array(0) { + } +} +array(7) { + [0]=> + float(1.2) + [1]=> + float(1.7) + [2]=> + bool(false) + [3]=> + float(-23234.123) + [4]=> + bool(false) + [5]=> + bool(false) + [6]=> + array(0) { + } +} + +Warning: filter_var() expects parameter 2 to be long, array given in %s on line %d +NULL +string(1) "1" +string(1) "1" +string(1) "1" +bool(false) +bool(false) +Done diff --git a/ext/filter/tests/011.phpt b/ext/filter/tests/011.phpt new file mode 100644 index 0000000..6a9bf1f --- /dev/null +++ b/ext/filter/tests/011.phpt @@ -0,0 +1,54 @@ +--TEST-- +input_get() +--INI-- +precision=14 +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--GET-- +a=<b>test</b>&b=http://example.com +--POST-- +c=<p>string</p>&d=12345.7 +--FILE-- +<?php +ini_set('html_errors', false); +var_dump(filter_input(INPUT_GET, "a", FILTER_SANITIZE_STRIPPED)); +var_dump(filter_input(INPUT_GET, "b", FILTER_SANITIZE_URL)); +var_dump(filter_input(INPUT_GET, "a", FILTER_SANITIZE_SPECIAL_CHARS, array(1,2,3,4,5))); +var_dump(filter_input(INPUT_GET, "b", FILTER_VALIDATE_FLOAT, new stdClass)); +var_dump(filter_input(INPUT_POST, "c", FILTER_SANITIZE_STRIPPED, array(5,6,7,8))); +var_dump(filter_input(INPUT_POST, "d", FILTER_VALIDATE_FLOAT)); +var_dump(filter_input(INPUT_POST, "c", FILTER_SANITIZE_SPECIAL_CHARS)); +var_dump(filter_input(INPUT_POST, "d", FILTER_VALIDATE_INT)); + +var_dump(filter_var(new stdClass, "d")); + +var_dump(filter_input(INPUT_POST, "c", "", "")); +var_dump(filter_var("", "", "", "", "")); +var_dump(filter_var(0, 0, 0, 0, 0)); + +echo "Done\n"; +?> +--EXPECTF-- +string(4) "test" +string(18) "http://example.com" +string(27) "<b>test</b>" + +Notice: Object of class stdClass could not be converted to int in %s011.php on line %d +bool(false) +string(6) "string" +float(12345.7) +string(29) "<p>string</p>" +bool(false) + +Warning: filter_var() expects parameter 2 to be long, string given in %s011.php on line %d +NULL + +Warning: filter_input() expects parameter 3 to be long, string given in %s011.php on line %d +NULL + +Warning: filter_var() expects at most 3 parameters, 5 given in %s011.php on line %d +NULL + +Warning: filter_var() expects at most 3 parameters, 5 given in %s011.php on line %d +NULL +Done diff --git a/ext/filter/tests/012.phpt b/ext/filter/tests/012.phpt new file mode 100644 index 0000000..9a8ead9 --- /dev/null +++ b/ext/filter/tests/012.phpt @@ -0,0 +1,18 @@ +--TEST-- +filter_input() +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +var_dump(filter_input(INPUT_GET, "test")); +var_dump(filter_input(INPUT_POST, "test")); +var_dump(filter_input(INPUT_COOKIE, "")); + +echo "Done\n"; +?> +--EXPECT-- +NULL +NULL +NULL +Done diff --git a/ext/filter/tests/013.phpt b/ext/filter/tests/013.phpt new file mode 100644 index 0000000..421c5d5 --- /dev/null +++ b/ext/filter/tests/013.phpt @@ -0,0 +1,74 @@ +--TEST-- +filter_var() and flags +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +var_dump(filter_var(" 234", FILTER_VALIDATE_INT)); +var_dump(filter_var("234 ", FILTER_VALIDATE_INT)); +var_dump(filter_var(" 234 ", FILTER_VALIDATE_INT)); +var_dump(filter_var("0xff", FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX))); +var_dump(filter_var("0Xff", FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX))); +var_dump(filter_var("0xFF", FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX))); +var_dump(filter_var("0XFF", FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX))); +var_dump(filter_var("07", FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_OCTAL))); +var_dump(filter_var("0xff0000", FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX))); +var_dump(filter_var("0666", FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_OCTAL))); +var_dump(filter_var("08", FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_OCTAL))); +var_dump(filter_var("00", FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_OCTAL))); +var_dump(filter_var("000", FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_OCTAL))); + +var_dump(filter_var("-0xff", FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX))); +var_dump(filter_var("-0Xff", FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX))); +var_dump(filter_var("-0xFF", FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX))); +var_dump(filter_var("-0XFF", FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX))); +var_dump(filter_var("-07", FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_OCTAL))); +var_dump(filter_var("-0xff0000", FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX))); +var_dump(filter_var("-0666", FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_OCTAL))); + +var_dump(filter_var("6", FILTER_VALIDATE_INT, array("options" => array("min_range"=>1, "max_range"=>7)))); +var_dump(filter_var("6", FILTER_VALIDATE_INT, array("options" => array("min_range"=>0, "max_range"=>5)))); +var_dump(filter_var(-1, FILTER_VALIDATE_INT, array("options" => array("min_range"=>1, "max_range"=>7)))); +var_dump(filter_var(-1, FILTER_VALIDATE_INT, array("options" => array("min_range"=>-4, "max_range"=>7)))); + +var_dump(filter_var("", FILTER_VALIDATE_INT, array("options" => array("min_range"=>-4, "max_range"=>7)))); +var_dump(filter_var("", FILTER_VALIDATE_INT, array("options" => array("min_range"=>2, "max_range"=>7)))); +var_dump(filter_var("", FILTER_VALIDATE_INT, array("options" => array("min_range"=>-5, "max_range"=>-3)))); +var_dump(filter_var(345, FILTER_VALIDATE_INT, array("options" => array("min_range"=>500, "max_range"=>100)))); +var_dump(filter_var("0ff", FILTER_VALIDATE_INT)); +var_dump(filter_var("010", FILTER_VALIDATE_INT)); + +echo "Done\n"; +?> +--EXPECT-- +int(234) +int(234) +int(234) +int(255) +int(255) +int(255) +int(255) +int(7) +int(16711680) +int(438) +bool(false) +int(0) +int(0) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +int(6) +bool(false) +bool(false) +int(-1) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +Done diff --git a/ext/filter/tests/014.phpt b/ext/filter/tests/014.phpt new file mode 100644 index 0000000..8837457 --- /dev/null +++ b/ext/filter/tests/014.phpt @@ -0,0 +1,70 @@ +--TEST-- +filter_var() and FILTER_VALIDATE_BOOLEAN +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +class test { + + function __toString() { + return "blah"; + } +} + +$t = new test; + +var_dump(filter_var("no", FILTER_VALIDATE_BOOLEAN)); +var_dump(filter_var(NULL, FILTER_VALIDATE_BOOLEAN)); +var_dump(filter_var($t, FILTER_VALIDATE_BOOLEAN)); +var_dump(filter_var(array(1,2,3,0,array("", "123")), FILTER_VALIDATE_BOOLEAN, FILTER_REQUIRE_ARRAY)); +var_dump(filter_var("yes", FILTER_VALIDATE_BOOLEAN)); +var_dump(filter_var("true", FILTER_VALIDATE_BOOLEAN)); +var_dump(filter_var("false", FILTER_VALIDATE_BOOLEAN)); +var_dump(filter_var("off", FILTER_VALIDATE_BOOLEAN)); +var_dump(filter_var("on", FILTER_VALIDATE_BOOLEAN)); +var_dump(filter_var("0", FILTER_VALIDATE_BOOLEAN)); +var_dump(filter_var("1", FILTER_VALIDATE_BOOLEAN)); +var_dump(filter_var("NONE", FILTER_VALIDATE_BOOLEAN)); +var_dump(filter_var("", FILTER_VALIDATE_BOOLEAN)); +var_dump(filter_var(-1, FILTER_VALIDATE_BOOLEAN)); +var_dump(filter_var("000000", FILTER_VALIDATE_BOOLEAN)); +var_dump(filter_var("111111", FILTER_VALIDATE_BOOLEAN)); + + +echo "Done\n"; +?> +--EXPECT-- +bool(false) +bool(false) +bool(false) +array(5) { + [0]=> + bool(true) + [1]=> + bool(false) + [2]=> + bool(false) + [3]=> + bool(false) + [4]=> + array(2) { + [0]=> + bool(false) + [1]=> + bool(false) + } +} +bool(true) +bool(true) +bool(false) +bool(false) +bool(true) +bool(false) +bool(true) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +Done diff --git a/ext/filter/tests/015.phpt b/ext/filter/tests/015.phpt new file mode 100644 index 0000000..476615a --- /dev/null +++ b/ext/filter/tests/015.phpt @@ -0,0 +1,89 @@ +--TEST-- +filter_var() and FILTER_VALIDATE_URL +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +$values = Array( +'http://example.com/index.html', +'http://www.example.com/index.php', +'http://www.example/img/test.png', +'http://www.example/img/dir/', +'http://www.example/img/dir', +'http//www.example/wrong/url/', +'http:/www.example', +'file:///tmp/test.c', +'ftp://ftp.example.com/tmp/', +'/tmp/test.c', +'/', +'http://', +'http:/', +'http:', +'http', +'', +-1, +array(), +'mailto:foo@bar.com', +'news:news.php.net', +'file://foo/bar', +"http://\r\n/bar", +"http://example.com:qq", +"http://example.com:-2", +"http://example.com:65536", +"http://example.com:65537", +); +foreach ($values as $value) { + var_dump(filter_var($value, FILTER_VALIDATE_URL)); +} + + +var_dump(filter_var("qwe", FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED)); +var_dump(filter_var("http://qwe", FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED)); +var_dump(filter_var("http://", FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)); +var_dump(filter_var("/tmp/test", FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)); +var_dump(filter_var("http://www.example.com", FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)); +var_dump(filter_var("http://www.example.com", FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED)); +var_dump(filter_var("http://www.example.com/path/at/the/server/", FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED)); +var_dump(filter_var("http://www.example.com/index.html", FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)); +var_dump(filter_var("http://www.example.com/index.php?a=b&c=d", FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)); + +echo "Done\n"; +?> +--EXPECT-- +string(29) "http://example.com/index.html" +string(32) "http://www.example.com/index.php" +string(31) "http://www.example/img/test.png" +string(27) "http://www.example/img/dir/" +string(26) "http://www.example/img/dir" +bool(false) +bool(false) +string(18) "file:///tmp/test.c" +string(26) "ftp://ftp.example.com/tmp/" +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +string(18) "mailto:foo@bar.com" +string(17) "news:news.php.net" +string(14) "file://foo/bar" +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +string(10) "http://qwe" +bool(false) +bool(false) +string(22) "http://www.example.com" +bool(false) +string(42) "http://www.example.com/path/at/the/server/" +bool(false) +string(40) "http://www.example.com/index.php?a=b&c=d" +Done diff --git a/ext/filter/tests/016.phpt b/ext/filter/tests/016.phpt new file mode 100644 index 0000000..c678344 --- /dev/null +++ b/ext/filter/tests/016.phpt @@ -0,0 +1,46 @@ +--TEST-- +filter_var() and FILTER_VALIDATE_EMAIL +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$values = Array( +'a@b.c', +'abuse@example.com', +'test!.!@#$%^&*@example.com', +'test@@#$%^&*())).com', +'test@.com', +'test@com', +'@', +'[]()/@example.com', +'QWERTYUIOPASDFGHJKLZXCVBNM@QWERTYUIOPASDFGHJKLZXCVBNM.NET', +'e.x.a.m.p.l.e.@example.com', +'firstname.lastname@employee.2something.com', +'-@foo.com', +'foo@-.com', +'foo@bar.123', +'foo@bar.-' +); +foreach ($values as $value) { + var_dump(filter_var($value, FILTER_VALIDATE_EMAIL)); +} + +echo "Done\n"; +?> +--EXPECT-- +string(5) "a@b.c" +string(17) "abuse@example.com" +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +string(57) "QWERTYUIOPASDFGHJKLZXCVBNM@QWERTYUIOPASDFGHJKLZXCVBNM.NET" +bool(false) +string(42) "firstname.lastname@employee.2something.com" +string(9) "-@foo.com" +bool(false) +bool(false) +bool(false) +Done diff --git a/ext/filter/tests/017.phpt b/ext/filter/tests/017.phpt new file mode 100644 index 0000000..518ee79 --- /dev/null +++ b/ext/filter/tests/017.phpt @@ -0,0 +1,26 @@ +--TEST-- +filter_var() and FILTER_VALIDATE_REGEXP +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +var_dump(filter_var("data", FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>'/.*/')))); +var_dump(filter_var("data", FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>'/^b(.*)/')))); +var_dump(filter_var("data", FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>'/^d(.*)/')))); +var_dump(filter_var("data", FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>'/blah/')))); +var_dump(filter_var("data", FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>'/\[/')))); +var_dump(filter_var("data", FILTER_VALIDATE_REGEXP)); + +echo "Done\n"; +?> +--EXPECTF-- +string(4) "data" +bool(false) +string(4) "data" +bool(false) +bool(false) + +Warning: filter_var(): 'regexp' option missing in %s on line %d +bool(false) +Done diff --git a/ext/filter/tests/018.phpt b/ext/filter/tests/018.phpt new file mode 100644 index 0000000..af52b2e --- /dev/null +++ b/ext/filter/tests/018.phpt @@ -0,0 +1,54 @@ +--TEST-- +filter_var() and FILTER_VALIDATE_IP +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +var_dump(filter_var("192.168.0.1", FILTER_VALIDATE_IP)); +var_dump(filter_var("192.168.0.1.1", FILTER_VALIDATE_IP)); +var_dump(filter_var("::1", FILTER_VALIDATE_IP)); +var_dump(filter_var("fe00::0", FILTER_VALIDATE_IP)); +var_dump(filter_var("::123456", FILTER_VALIDATE_IP)); +var_dump(filter_var("::1::b", FILTER_VALIDATE_IP)); +var_dump(filter_var("127.0.0.1", FILTER_VALIDATE_IP)); +var_dump(filter_var("192.168.0.1", FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE)); +var_dump(filter_var("192.0.34.166", FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE)); +var_dump(filter_var("127.0.0.1", FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)); +var_dump(filter_var("192.0.0.1", FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)); +var_dump(filter_var("192.0.34.166", FILTER_VALIDATE_IP)); +var_dump(filter_var("256.1237.123.1", FILTER_VALIDATE_IP)); +var_dump(filter_var("255.255.255.255", FILTER_VALIDATE_IP)); +var_dump(filter_var("255.255.255.255", FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)); +var_dump(filter_var("", FILTER_VALIDATE_IP)); +var_dump(filter_var(-1, FILTER_VALIDATE_IP)); +var_dump(filter_var("::1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)); +var_dump(filter_var("127.0.0.1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)); +var_dump(filter_var("::1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)); +var_dump(filter_var("::1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 | FILTER_FLAG_NO_RES_RANGE)); +var_dump(filter_var("127.0.0.1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)); +echo "Done\n"; +?> +--EXPECT-- +string(11) "192.168.0.1" +bool(false) +string(3) "::1" +string(7) "fe00::0" +bool(false) +bool(false) +string(9) "127.0.0.1" +bool(false) +string(12) "192.0.34.166" +bool(false) +string(9) "192.0.0.1" +string(12) "192.0.34.166" +bool(false) +string(15) "255.255.255.255" +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +string(3) "::1" +bool(false) +string(9) "127.0.0.1" +Done diff --git a/ext/filter/tests/019.phpt b/ext/filter/tests/019.phpt new file mode 100644 index 0000000..1665181 --- /dev/null +++ b/ext/filter/tests/019.phpt @@ -0,0 +1,22 @@ +--TEST-- +filter_var() & FILTER_VALIDATE_IP and weird data +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +var_dump(filter_var("....", FILTER_VALIDATE_IP)); +var_dump(filter_var("...", FILTER_VALIDATE_IP)); +var_dump(filter_var("..", FILTER_VALIDATE_IP)); +var_dump(filter_var(".", FILTER_VALIDATE_IP)); +var_dump(filter_var("1.1.1.1", FILTER_VALIDATE_IP)); + +echo "Done\n"; +?> +--EXPECT-- +bool(false) +bool(false) +bool(false) +bool(false) +string(7) "1.1.1.1" +Done diff --git a/ext/filter/tests/020.phpt b/ext/filter/tests/020.phpt new file mode 100644 index 0000000..c2ab609 --- /dev/null +++ b/ext/filter/tests/020.phpt @@ -0,0 +1,20 @@ +--TEST-- +filter_var() and FILTER_SANITIZE_MAGIC_QUOTES +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +var_dump(filter_var("test'asd'asd'' asd\'\"asdfasdf", FILTER_SANITIZE_MAGIC_QUOTES)); +var_dump(filter_var("'", FILTER_SANITIZE_MAGIC_QUOTES)); +var_dump(filter_var("", FILTER_SANITIZE_MAGIC_QUOTES)); +var_dump(filter_var(-1, FILTER_SANITIZE_MAGIC_QUOTES)); + +echo "Done\n"; +?> +--EXPECT-- +string(36) "test\'asd\'asd\'\' asd\\\'\"asdfasdf" +string(2) "\'" +string(0) "" +string(2) "-1" +Done diff --git a/ext/filter/tests/021.phpt b/ext/filter/tests/021.phpt new file mode 100644 index 0000000..994dac2 --- /dev/null +++ b/ext/filter/tests/021.phpt @@ -0,0 +1,46 @@ +--TEST-- +filter_var() and FILTER_SANITIZE_NUMBER_* +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +var_dump(filter_var("qwertyu123456dfghj", FILTER_SANITIZE_NUMBER_INT)); +var_dump(filter_var("asd123123.asd123.23", FILTER_SANITIZE_NUMBER_INT)); +var_dump(filter_var("123,23", FILTER_SANITIZE_NUMBER_INT)); +var_dump(filter_var("", FILTER_SANITIZE_NUMBER_INT)); +var_dump(filter_var("0", FILTER_SANITIZE_NUMBER_INT)); +var_dump(filter_var("asd123.2asd", FILTER_SANITIZE_NUMBER_INT)); +var_dump(filter_var("qwertyuiop", FILTER_SANITIZE_NUMBER_INT)); +var_dump(filter_var("123.4", FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)); +var_dump(filter_var("123,4", FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)); +var_dump(filter_var("123.4", FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_THOUSAND)); +var_dump(filter_var("123,4", FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_THOUSAND)); +var_dump(filter_var("123.4e", FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_SCIENTIFIC)); +var_dump(filter_var("123,4E", FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_SCIENTIFIC)); +var_dump(filter_var("qwe123,4qwe", FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)); +var_dump(filter_var("werty65456.34", FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)); +var_dump(filter_var("234.56fsfd", FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)); +var_dump(filter_var("", FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)); + +echo "Done\n"; +?> +--EXPECT-- +string(6) "123456" +string(11) "12312312323" +string(5) "12323" +string(0) "" +string(1) "0" +string(4) "1232" +string(0) "" +string(5) "123.4" +string(4) "1234" +string(4) "1234" +string(5) "123,4" +string(5) "1234e" +string(5) "1234E" +string(4) "1234" +string(8) "65456.34" +string(6) "234.56" +string(0) "" +Done diff --git a/ext/filter/tests/022.phpt b/ext/filter/tests/022.phpt new file mode 100644 index 0000000..649c6e4 --- /dev/null +++ b/ext/filter/tests/022.phpt @@ -0,0 +1,22 @@ +--TEST-- +filter_var() and FILTER_SANITIZE_EMAIL +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +var_dump(filter_var("a@b.c", FILTER_SANITIZE_EMAIL)); +var_dump(filter_var("a[!@#$%^&*()@a@#$%^&*(.com@#$%^&*(", FILTER_SANITIZE_EMAIL)); +var_dump(filter_var("white space here \ \ \" som more", FILTER_SANITIZE_EMAIL)); +var_dump(filter_var("", FILTER_SANITIZE_EMAIL)); +var_dump(filter_var("123456789000000", FILTER_SANITIZE_EMAIL)); + +echo "Done\n"; +?> +--EXPECTF-- +string(5) "a@b.c" +string(30) "a[!@#$%^&*@a@#$%^&*.com@#$%^&*" +string(21) "whitespaceheresommore" +string(0) "" +string(15) "123456789000000" +Done diff --git a/ext/filter/tests/023.phpt b/ext/filter/tests/023.phpt new file mode 100644 index 0000000..f8d4137 --- /dev/null +++ b/ext/filter/tests/023.phpt @@ -0,0 +1,22 @@ +--TEST-- +filter_var() and FILTER_UNSAFE_RAW +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +var_dump(filter_var("}\"<p>test para</p>", FILTER_UNSAFE_RAW, FILTER_FLAG_ENCODE_AMP)); +var_dump(filter_var("a[!@#<b>$%^&*()@a@#$%^&*(.<br>com@#$%^&*(", FILTER_UNSAFE_RAW, FILTER_FLAG_ENCODE_AMP)); +var_dump(filter_var("white space here \ \ \" some more", FILTER_UNSAFE_RAW, FILTER_FLAG_ENCODE_AMP)); +var_dump(filter_var("", FILTER_UNSAFE_RAW, FILTER_FLAG_ENCODE_AMP)); +var_dump(filter_var(" 123456789000000 <qwertyuiop> ", FILTER_UNSAFE_RAW, FILTER_FLAG_ENCODE_AMP)); + +echo "Done\n"; +?> +--EXPECT-- +string(18) "}"<p>test para</p>" +string(53) "a[!@#<b>$%^&*()@a@#$%^&*(.<br>com@#$%^&*(" +string(32) "white space here \ \ " some more" +string(0) "" +string(48) " 123456789000000 <qwertyuiop> " +Done diff --git a/ext/filter/tests/024.phpt b/ext/filter/tests/024.phpt new file mode 100644 index 0000000..7d7349f --- /dev/null +++ b/ext/filter/tests/024.phpt @@ -0,0 +1,20 @@ +--TEST-- +filter_var() and FILTER_SANITIZE_ENCODED +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +var_dump(filter_var("\"<br>blah</ph>", FILTER_SANITIZE_ENCODED)); +var_dump(filter_var("", FILTER_SANITIZE_ENCODED)); +var_dump(filter_var(" text here ", FILTER_SANITIZE_ENCODED)); +var_dump(filter_var("!@#$%^&*()QWERTYUIOP{ASDFGHJKL:\"ZXCVBNM<>?", FILTER_SANITIZE_ENCODED)); + +echo "Done\n"; +?> +--EXPECT-- +string(26) "%22%3Cbr%3Eblah%3C%2Fph%3E" +string(0) "" +string(23) "%20%20text%20here%20%20" +string(74) "%21%40%23%24%25%5E%26%2A%28%29QWERTYUIOP%7BASDFGHJKL%3A%22ZXCVBNM%3C%3E%3F" +Done diff --git a/ext/filter/tests/025.phpt b/ext/filter/tests/025.phpt new file mode 100644 index 0000000..df8c373 --- /dev/null +++ b/ext/filter/tests/025.phpt @@ -0,0 +1,26 @@ +--TEST-- +filter_var() and FILTER_SANITIZE_STRING +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +var_dump(filter_var("", FILTER_SANITIZE_STRING)); +var_dump(filter_var("<>", FILTER_SANITIZE_STRING)); +var_dump(filter_var("<>!@#$%^&*()'\"", FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES)); +var_dump(filter_var("<>!@#$%^&*()'\"", FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_AMP)); +var_dump(filter_var("<>`1234567890", FILTER_SANITIZE_STRING)); +var_dump(filter_var("`123`", FILTER_SANITIZE_STRING)); +var_dump(filter_var(".", FILTER_SANITIZE_STRING)); + +echo "Done\n"; +?> +--EXPECT-- +string(0) "" +string(0) "" +string(12) "!@#$%^&*()'"" +string(24) "!@#$%^&*()'"" +string(11) "`1234567890" +string(5) "`123`" +string(1) "." +Done diff --git a/ext/filter/tests/026.phpt b/ext/filter/tests/026.phpt new file mode 100644 index 0000000..38d15e7 --- /dev/null +++ b/ext/filter/tests/026.phpt @@ -0,0 +1,32 @@ +--TEST-- +filter_var() and FILTER_SANITIZE_STRIPPED +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +var_dump(filter_var("<p>Let me <font color=\"#000000\">see</font> you <br /><b>Stripped</b> down to the bone</p>", FILTER_SANITIZE_STRIPPED)); +var_dump(filter_var("!@#$%^&*()><<>+_\"'<br><p /><li />", FILTER_SANITIZE_STRIPPED)); +var_dump(filter_var("", FILTER_SANITIZE_STRIPPED)); + +var_dump(filter_var("<p>Let me <font color=\"#000000\">see</font> you <br /><b>Stripped</b> down to the bone</p>", FILTER_SANITIZE_STRIPPED, FILTER_FLAG_STRIP_LOW)); +var_dump(filter_var("!@#$%^&*()><<>+_\"'<br><p /><li />", FILTER_SANITIZE_STRIPPED, FILTER_FLAG_STRIP_LOW)); +var_dump(filter_var("", FILTER_SANITIZE_STRIPPED, FILTER_FLAG_STRIP_LOW)); + +var_dump(filter_var("<p>Let me <font color=\"#000000\">see</font> you <br /><b>Stripped</b> down to the bone</p>", FILTER_SANITIZE_STRIPPED, FILTER_FLAG_STRIP_HIGH)); +var_dump(filter_var("!@#$%^&*()><<>+_\"'<br><p /><li />", FILTER_SANITIZE_STRIPPED, FILTER_FLAG_STRIP_HIGH)); +var_dump(filter_var("", FILTER_SANITIZE_STRIPPED, FILTER_FLAG_STRIP_HIGH)); + +echo "Done\n"; +?> +--EXPECTF-- +string(40) "Let me see you Stripped down to the bone" +string(11) "!@#$%^&*()>" +string(0) "" +string(40) "Let me see you Stripped down to the bone" +string(11) "!@#$%^&*()>" +string(0) "" +string(40) "Let me see you Stripped down to the bone" +string(11) "!@#$%^&*()>" +string(0) "" +Done diff --git a/ext/filter/tests/027.phpt b/ext/filter/tests/027.phpt new file mode 100644 index 0000000..759030a --- /dev/null +++ b/ext/filter/tests/027.phpt @@ -0,0 +1,32 @@ +--TEST-- +filter_var() and FILTER_SANITIZE_ENCODED +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +var_dump(filter_var("?><!@#$%^&*()}{~Qwertyuilfdsasdfgmnbvcxcvbn", FILTER_SANITIZE_ENCODED)); +var_dump(filter_var("<data&sons>", FILTER_SANITIZE_ENCODED)); +var_dump(filter_var("", FILTER_SANITIZE_ENCODED)); + +var_dump(filter_var("?><!@#$%^&*()}{~Qwertyuilfdsasdfgmnbvcxcvbn", FILTER_SANITIZE_ENCODED, FILTER_FLAG_ENCODE_LOW)); +var_dump(filter_var("<data&sons>", FILTER_SANITIZE_ENCODED, FILTER_FLAG_ENCODE_LOW)); +var_dump(filter_var("", FILTER_SANITIZE_ENCODED, FILTER_FLAG_ENCODE_LOW)); + +var_dump(filter_var("?><!@#$%^&*()}{~Qwertyuilfdsasdfgmnbvcxcvbn", FILTER_SANITIZE_ENCODED, FILTER_FLAG_ENCODE_HIGH)); +var_dump(filter_var("<data&sons>", FILTER_SANITIZE_ENCODED, FILTER_FLAG_ENCODE_HIGH)); +var_dump(filter_var("", FILTER_SANITIZE_ENCODED, FILTER_FLAG_ENCODE_HIGH)); + +echo "Done\n"; +?> +--EXPECT-- +string(75) "%3F%3E%3C%21%40%23%24%25%5E%26%2A%28%29%7D%7B%7EQwertyuilfdsasdfgmnbvcxcvbn" +string(17) "%3Cdata%26sons%3E" +string(0) "" +string(75) "%3F%3E%3C%21%40%23%24%25%5E%26%2A%28%29%7D%7B%7EQwertyuilfdsasdfgmnbvcxcvbn" +string(17) "%3Cdata%26sons%3E" +string(0) "" +string(75) "%3F%3E%3C%21%40%23%24%25%5E%26%2A%28%29%7D%7B%7EQwertyuilfdsasdfgmnbvcxcvbn" +string(17) "%3Cdata%26sons%3E" +string(0) "" +Done diff --git a/ext/filter/tests/028.phpt b/ext/filter/tests/028.phpt new file mode 100644 index 0000000..c0ab16f --- /dev/null +++ b/ext/filter/tests/028.phpt @@ -0,0 +1,37 @@ +--TEST-- +filter_var() and FILTER_SANITIZE_SPECIAL_CHARS +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +var_dump(filter_var("?><!@#$%^&*()}{~Qwertyuilfdsasdfgmnbvcxcvbn", FILTER_SANITIZE_SPECIAL_CHARS)); +var_dump(filter_var("<data&sons>", FILTER_SANITIZE_SPECIAL_CHARS)); +var_dump(filter_var("", FILTER_SANITIZE_SPECIAL_CHARS)); + +var_dump(filter_var("?><!@#$%^&*()}{~Qwertyuilfdsasdfgmnbvcxcvbn", FILTER_SANITIZE_SPECIAL_CHARS, FILTER_FLAG_ENCODE_LOW)); +var_dump(filter_var("<data&sons>", FILTER_SANITIZE_SPECIAL_CHARS, FILTER_FLAG_ENCODE_LOW)); +var_dump(filter_var("", FILTER_SANITIZE_SPECIAL_CHARS, FILTER_FLAG_ENCODE_LOW)); + +var_dump(filter_var("?><!@#$%^&*()}{~Qwertyuilfdsasdfgmnbvcxcvbn", FILTER_SANITIZE_SPECIAL_CHARS, FILTER_FLAG_ENCODE_HIGH)); +var_dump(filter_var("<data&sons>", FILTER_SANITIZE_SPECIAL_CHARS, FILTER_FLAG_ENCODE_HIGH)); +var_dump(filter_var("", FILTER_SANITIZE_SPECIAL_CHARS, FILTER_FLAG_ENCODE_HIGH)); + +var_dump(filter_var("ะบะธัะธะปะปะธัะฐ", FILTER_SANITIZE_SPECIAL_CHARS, FILTER_FLAG_ENCODE_HIGH)); +var_dump(filter_var("ะบะธัะธะปะปะธัะฐ", FILTER_SANITIZE_SPECIAL_CHARS, FILTER_FLAG_ENCODE_LOW)); + +echo "Done\n"; +?> +--EXPECT-- +string(55) "?><!@#$%^&*()}{~Qwertyuilfdsasdfgmnbvcxcvbn" +string(23) "<data&sons>" +string(0) "" +string(55) "?><!@#$%^&*()}{~Qwertyuilfdsasdfgmnbvcxcvbn" +string(23) "<data&sons>" +string(0) "" +string(55) "?><!@#$%^&*()}{~Qwertyuilfdsasdfgmnbvcxcvbn" +string(23) "<data&sons>" +string(0) "" +string(108) "кириллица" +string(18) "ะบะธัะธะปะปะธัะฐ" +Done diff --git a/ext/filter/tests/029.phpt b/ext/filter/tests/029.phpt new file mode 100644 index 0000000..c1ede74 --- /dev/null +++ b/ext/filter/tests/029.phpt @@ -0,0 +1,105 @@ +--TEST-- +filter_var() and FILTER_CALLBACK +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +/* Simple callback function */ +function test($var) { + return strtoupper($var); +} + +var_dump(filter_var("data", FILTER_CALLBACK, array("options"=>"test"))); +var_dump(filter_var("~!@#$%^&*()_QWERTYUIOPASDFGHJKLZXCVBNM<>>?\"}{:", FILTER_CALLBACK, array("options"=>"test"))); +var_dump(filter_var("", FILTER_CALLBACK, array("options"=>"test"))); +var_dump(filter_var("qwe", FILTER_CALLBACK, array("options"=>"no such func"))); +var_dump(filter_var("qwe", FILTER_CALLBACK, array("options"=>""))); +var_dump(filter_var("qwe", FILTER_CALLBACK)); + +/* Simple class method callback */ +class test_class { + static function test ($var) { + return strtolower($var); + } +} + +var_dump(filter_var("dAtA", FILTER_CALLBACK, array("options"=>array("test_class", "test")))); +var_dump(filter_var("~!@#$%^&*()_QWERTYUIOPASDFGHJKLZXCVBNM<>>?\"}{:", FILTER_CALLBACK, array("options"=>array("test_class","test")))); +var_dump(filter_var("", FILTER_CALLBACK, array("options"=>array("test_class","test")))); + +/* empty function without return value */ +function test1($var) { +} + +var_dump(filter_var("data", FILTER_CALLBACK, array("options"=>"test1"))); +var_dump(filter_var("~!@#$%^&*()_QWERTYUIOPASDFGHJKLZXCVBNM<>>?\"}{:", FILTER_CALLBACK, array("options"=>"test1"))); +var_dump(filter_var("", FILTER_CALLBACK, array("options"=>"test1"))); + +/* attempting to change data by reference */ +function test2(&$var) { + $var = 1; +} + +var_dump(filter_var("data", FILTER_CALLBACK, array("options"=>"test2"))); +var_dump(filter_var("~!@#$%^&*()_QWERTYUIOPASDFGHJKLZXCVBNM<>>?\"}{:", FILTER_CALLBACK, array("options"=>"test2"))); +var_dump(filter_var("", FILTER_CALLBACK, array("options"=>"test2"))); + +/* unsetting data */ +function test3(&$var) { + unset($var); +} + +var_dump(filter_var("data", FILTER_CALLBACK, array("options"=>"test3"))); +var_dump(filter_var("~!@#$%^&*()_QWERTYUIOPASDFGHJKLZXCVBNM<>>?\"}{:", FILTER_CALLBACK, array("options"=>"test3"))); +var_dump(filter_var("", FILTER_CALLBACK, array("options"=>"test3"))); + +/* unset data and return value */ +function test4(&$var) { + unset($var); + return 1; +} + +var_dump(filter_var("data", FILTER_CALLBACK, array("options"=>"test4"))); + +/* thrown exception in the callback */ +function test5(&$var) { + throw new Exception("test"); +} + +try { + var_dump(filter_var("data", FILTER_CALLBACK, array("options"=>"test5"))); +} catch (Exception $e) { + var_dump($e->getMessage()); +} + +echo "Done\n"; +?> +--EXPECTF-- +string(4) "DATA" +string(46) "~!@#$%^&*()_QWERTYUIOPASDFGHJKLZXCVBNM<>>?"}{:" +string(0) "" + +Warning: filter_var(): First argument is expected to be a valid callback in %s on line %d +NULL + +Warning: filter_var(): First argument is expected to be a valid callback in %s on line %d +NULL + +Warning: filter_var(): First argument is expected to be a valid callback in %s on line %d +NULL +string(4) "data" +string(46) "~!@#$%^&*()_qwertyuiopasdfghjklzxcvbnm<>>?"}{:" +string(0) "" +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +NULL +int(1) +string(4) "test" +Done diff --git a/ext/filter/tests/030.phpt b/ext/filter/tests/030.phpt new file mode 100644 index 0000000..c5af15e --- /dev/null +++ b/ext/filter/tests/030.phpt @@ -0,0 +1,64 @@ +--TEST-- +filter_var() and IPv6 +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$ipv6_test = array( + "::127.0.0.1" => true, + "FF01::101:127.0.1" => false, + "FF01:0:0:0:101:127.0.1.1" => false, + "FF01:0:0:0:237:101:127.0.1.1" => true, + "FF01::101" => true, + "A1080::8:800:200C:417A" => false, + "1080::8:Z00:200C:417A" => false, + "FF01::101::1" => false, + "1080::8:800:200C:417A" => true, + "1080:0:0:0:8:800:200C:417A" => true, + "2001:ec8:1:1:1:1:1:1" => true, + "ffff::FFFF:129.144.52.38" => true, + "::ffff:1.2.3.4" => true, + "0:0:0:0:0:FFFF:129.144.52.38" => true, + "0:0:0:0:0:0:13.1.68.3" => true, + "0:0:0:0:0:0:0:13.1.68.3" => false, + "::13.1.68.3" => true, + "::FFFF:129.144.52.38" => true, + + "1:2:3:4:5:6::129.144.52.38" => false, + "::1:2:3:4:5:6:129.144.52.38" => false, + "1:2:3::4:5:6:129.144.52.38" => false, + + "1:2:3:4::5:6:7:8" => false, + "::1:2:3:4:5:6:7" => true, + "::1:2:3:4:5:6:7:8" => false, + "1:2:3:4:5:6:7::" => true, + "1:2:3:4:5:6:7:8::" => false, + "1:2:3:4:5:6:7::8" => false, + + "1:2:3:4:5:6:7:8g" => false, + "1:2:3:4:5:6:7:g" => false, + "1:2:3:4:5g:6:7:8" => false, + + 'a:b:c:d:e::1.2.3.4' => true, + '::0:a:b:c:d:e:f' => true, + '0:a:b:c:d:e:f::' => true, + ':::1.2.3.4' => false, + '8:::1.2.3.4' => false, + '::01.02.03.04' => false, + '::1.00.3.4' => false, + '0:0:0:255.255.255.255' => false, + '0:0:0::255.255.255.255' => true, +); +foreach ($ipv6_test as $ip => $exp) { + $out = filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6); + $out = (int) ($out === false ? 0 : 1); + if ($exp != $out) { + echo "$ip failed (expected ", $exp?"true":"false", ", got ", + $out?"true":"false", ")\n"; + } +} + +echo "Ok\n"; +?> +--EXPECT-- +Ok diff --git a/ext/filter/tests/031.phpt b/ext/filter/tests/031.phpt new file mode 100644 index 0000000..23691fb --- /dev/null +++ b/ext/filter/tests/031.phpt @@ -0,0 +1,58 @@ +--TEST-- +filter_var() and FLOAT +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--INI-- +precision=14 +--FILE-- +<?php + +$floats = array( +'1.234 ', +' 1.234', +'1.234' , +'1.2e3', +'7E3', +'7E3 ', +' 7E3 ', +' 7E-3 ' +); + +foreach ($floats as $float) { + $out = filter_var($float, FILTER_VALIDATE_FLOAT); + var_dump($out); +} + +$floats = array( +'1.234 ' => ',', +'1,234' => ',', +' 1.234' => '.', +'1.234' => '..', +'1.2e3' => ',' +); + +echo "\ncustom decimal:\n"; +foreach ($floats as $float => $dec) { + $out = filter_var($float, FILTER_VALIDATE_FLOAT, array("options"=>array('decimal' => $dec))); + var_dump($out); +} + +?> +--EXPECTF-- +float(1.234) +float(1.234) +float(1.234) +float(1200) +float(7000) +float(7000) +float(7000) +float(0.007) + +custom decimal: +bool(false) +float(1.234) +float(1.234) + +Warning: filter_var(): decimal separator must be one char in %s on line %d +bool(false) +bool(false) diff --git a/ext/filter/tests/032.phpt b/ext/filter/tests/032.phpt new file mode 100644 index 0000000..d88d502 --- /dev/null +++ b/ext/filter/tests/032.phpt @@ -0,0 +1,57 @@ +--TEST-- +input_get_args() +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$data = array( + 'product_id' => 'libgd<script>', + 'component' => '10dhsajkkdhk <do>', + 'versions' => '2.0.33', + 'testscalar' => array('2','23','10','12'), + 'testarray' => '2', +); + +$args = array( + 'product_id' => FILTER_SANITIZE_ENCODED, + 'component' => array(//'filter' => FILTER_VALIDATE_INT, + 'flags' => FILTER_FORCE_ARRAY, + 'options' => array("min_range"=>1, "max_range"=>10) + ), + 'versions' => array( + 'filter' => FILTER_SANITIZE_ENCODED, + 'flags' => FILTER_REQUIRE_SCALAR, + ), + 'doesnotexist' => FILTER_VALIDATE_INT, + 'testscalar' => FILTER_VALIDATE_INT, + 'testarray' => array( + 'filter' => FILTER_VALIDATE_INT, + 'flags' => FILTER_FORCE_ARRAY, + ) + +); + +$myinputs = filter_var_array($data, $args); +var_dump($myinputs); +?> +--EXPECT-- +array(6) { + ["product_id"]=> + string(17) "libgd%3Cscript%3E" + ["component"]=> + array(1) { + [0]=> + string(17) "10dhsajkkdhk <do>" + } + ["versions"]=> + string(6) "2.0.33" + ["doesnotexist"]=> + NULL + ["testscalar"]=> + bool(false) + ["testarray"]=> + array(1) { + [0]=> + int(2) + } +} diff --git a/ext/filter/tests/033.phpt b/ext/filter/tests/033.phpt new file mode 100644 index 0000000..04daa61 --- /dev/null +++ b/ext/filter/tests/033.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test all filters returned by filter_list() +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--INI-- +precision=14 +default_charset=UTF-8 +--FILE-- +<?php +include dirname(__FILE__) . '/033_run.inc'; +?> +--EXPECT-- +int 1 123 +boolean 1 +float 1 123 +validate_regexp O'Henry +validate_url http://a.b.c +validate_email foo@bar.com +validate_ip 1.2.3.4 +string PHP 1 foo@bar.com http://a.b.c 1.2.3.4 123 123abc() O'Henry ํํผ +stripped PHP 1 foo@bar.com http://a.b.c 1.2.3.4 123 123abc() O'Henry ํํผ +encoded PHP 1 foo%40bar.com http%3A%2F%2Fa.b.c 1.2.3.4 123 123abc%3C%3E%28%29 O%27Henry %ED%95%98%ED%8D%BC +special_chars PHP 1 foo@bar.com http://a.b.c 1.2.3.4 123 123abc<>() O'Henry ํํผ +full_special_chars PHP 1 foo@bar.com http://a.b.c 1.2.3.4 123 123abc<>() O'Henry ํํผ +unsafe_raw PHP 1 foo@bar.com http://a.b.c 1.2.3.4 123 123abc<>() O'Henry ํํผ +email PHP 1 foo@bar.com httpa.b.c 1.2.3.4 123 123abc O'Henry +url PHP 1 foo@bar.com http://a.b.c 1.2.3.4 123 123abc<>() O'Henry +number_int 1 1234 123 123 +number_float 1 1234 123 123 +magic_quotes PHP 1 foo@bar.com http://a.b.c 1.2.3.4 123 123abc<>() O\'Henry ํํผ +callback PHP 1 FOO@BAR.COM HTTP://A.B.C 1.2.3.4 123 123ABC<>() O'HENRY ํํผ diff --git a/ext/filter/tests/033_run.inc b/ext/filter/tests/033_run.inc new file mode 100644 index 0000000..e3b6738 --- /dev/null +++ b/ext/filter/tests/033_run.inc @@ -0,0 +1,40 @@ +<?php +if (function_exists('setlocale')) { + setlocale(LC_ALL, 'C'); +} + +function test($data) { + return strtoupper($data); +} + +$data = array( + "PHP", + "1", + "foo@bar.com", + "http://a.b.c", + "1.2.3.4", + "123", + "123abc<>()", + "O'Henry", + "ํํผ" +); + + +foreach(filter_list() as $filter) { + if($filter=="validate_regexp") { + foreach($data as $k=>$d) $result[$k] = filter_var($d,filter_id($filter),array("options"=>array("regexp"=>'/^O.*/'))); + } else { + foreach($data as $k=>$d) $result[$k] = filter_var($d,filter_id($filter),array("options"=>"test")); + } + printf("%-20s",$filter); + printf("%-5s",$result[0]); + printf("%-3s",$result[1]); + printf("%-15s",$result[2]); + printf("%-20s",$result[3]); + printf("%-10s",$result[4]); + printf("%-5s",$result[5]); + printf("%-20s",$result[6]); + printf("%-15s",$result[7]); + printf("%-10s\n",$result[8]); +} +?> diff --git a/ext/filter/tests/034.phpt b/ext/filter/tests/034.phpt new file mode 100644 index 0000000..364f902 --- /dev/null +++ b/ext/filter/tests/034.phpt @@ -0,0 +1,33 @@ +--TEST-- +Logical filter: boolean +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$booleans = array( +'1' => true, +'On' => true, +'Off' => true, +'True' => true, +'TrUe' => true, +'oN' => true, + +'0' => false, +'Off' => false, +'False' => false, +'faLsE' => false, +'oFf' => false, + +'' => false +); + +foreach($booleans as $val=>$exp) { + $res =filter_var($val, FILTER_VALIDATE_BOOLEAN); + if ($res !== $exp) { + echo "$val failed,'$exp' expect, '$res' received.\n"; + } +} +echo "Ok."; +?> +--EXPECTF-- +Ok. diff --git a/ext/filter/tests/035.phpt b/ext/filter/tests/035.phpt new file mode 100644 index 0000000..e2d3325 --- /dev/null +++ b/ext/filter/tests/035.phpt @@ -0,0 +1,38 @@ +--TEST-- +GET/POST/REQUEST Test with input_filter +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--POST-- +d=379 +--GET-- +ar[elm1]=1234&ar[elm2]=0660&a=0234 +--FILE-- +<?php +$ret = filter_input(INPUT_GET, 'a', FILTER_VALIDATE_INT); +var_dump($ret); + +$ret = filter_input(INPUT_GET, 'a', FILTER_VALIDATE_INT, array('flags'=>FILTER_FLAG_ALLOW_OCTAL)); +var_dump($ret); + +$ret = filter_input(INPUT_GET, 'ar', FILTER_VALIDATE_INT, array('flags'=>FILTER_REQUIRE_ARRAY)); +var_dump($ret); + +$ret = filter_input(INPUT_GET, 'ar', FILTER_VALIDATE_INT, array('flags'=>FILTER_FLAG_ALLOW_OCTAL|FILTER_REQUIRE_ARRAY)); +var_dump($ret); + +?> +--EXPECT-- +bool(false) +int(156) +array(2) { + ["elm1"]=> + int(1234) + ["elm2"]=> + bool(false) +} +array(2) { + ["elm1"]=> + int(1234) + ["elm2"]=> + int(432) +} diff --git a/ext/filter/tests/036.phpt b/ext/filter/tests/036.phpt new file mode 100644 index 0000000..9543266 --- /dev/null +++ b/ext/filter/tests/036.phpt @@ -0,0 +1,39 @@ +--TEST-- +input_get_args() and references +--SKIPIF-- +<?php if (!extension_loaded("filter")) print "skip"; ?> +--FILE-- +<?php + +$var = "1"; + +$data = array(); +$data["test1"] = 1; +$data["test2"] = &$var; + +$args = array(); +$args["test1"] = FILTER_VALIDATE_INT; +$args["test2"] = FILTER_VALIDATE_INT; + +$ret = filter_var_array($data, $args); +var_dump($ret); +var_dump($data); //should be separated, i.e. not reference anymore. looks like we can't change this, or it'd change the original zval instead.. +var_dump($var); //should be still string(1) "1" + +echo "Done\n"; +?> +--EXPECTF-- +array(2) { + ["test1"]=> + int(1) + ["test2"]=> + int(1) +} +array(2) { + ["test1"]=> + int(1) + ["test2"]=> + &string(1) "1" +} +string(1) "1" +Done diff --git a/ext/filter/tests/037.phpt b/ext/filter/tests/037.phpt new file mode 100644 index 0000000..f8497c6 --- /dev/null +++ b/ext/filter/tests/037.phpt @@ -0,0 +1,41 @@ +--TEST-- +GET and data callback tests +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--GET-- +a=1&b=2 +--FILE-- +<?php +function myfunc($val) { + return $val . '_callback'; +} +echo filter_input(INPUT_GET, 'a', FILTER_CALLBACK, array("options"=>'myfunc')); +echo "\n"; +echo filter_input(INPUT_GET, 'b', FILTER_VALIDATE_INT); +echo "\n"; +$data = "data"; + +echo filter_var($data, FILTER_CALLBACK, array("options"=>'myfunc')); +echo "\n"; + +$res = filter_input_array(INPUT_GET, array( + 'a' => array( + 'filter' => FILTER_CALLBACK, + 'options' => 'myfunc' + ), + 'b' => FILTER_VALIDATE_INT + ) + ); + +var_dump($res); +?> +--EXPECT-- +1_callback +2 +data_callback +array(2) { + ["a"]=> + string(10) "1_callback" + ["b"]=> + int(2) +} diff --git a/ext/filter/tests/038.phpt b/ext/filter/tests/038.phpt new file mode 100644 index 0000000..998c80f --- /dev/null +++ b/ext/filter/tests/038.phpt @@ -0,0 +1,58 @@ +--TEST-- +Test scalar, array +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +$var = 12; +$res = filter_var($var, FILTER_VALIDATE_INT, array('flags'=>FILTER_FLAG_ALLOW_OCTAL)); +var_dump($res); + +$var = array(12); +$res = filter_var($var, FILTER_VALIDATE_INT, array('flags'=>FILTER_FLAG_ALLOW_OCTAL)); +var_dump($res); + +$var = 12; +$res = filter_var($var, FILTER_VALIDATE_INT, array('flags'=>FILTER_FLAG_ALLOW_OCTAL|FILTER_FORCE_ARRAY)); +var_dump($res); + + + +$var = 12; +$res = filter_var($var, FILTER_VALIDATE_INT, array('flags'=>FILTER_FLAG_ALLOW_OCTAL|FILTER_REQUIRE_ARRAY)); +var_dump($res); + +$var = array(12); +$res = filter_var($var, FILTER_VALIDATE_INT, array('flags'=>FILTER_FLAG_ALLOW_OCTAL|FILTER_REQUIRE_ARRAY)); +var_dump($res); + +$var = array(12); +$res = filter_var($var, FILTER_VALIDATE_INT, array('flags'=>FILTER_FLAG_ALLOW_OCTAL|FILTER_FORCE_ARRAY|FILTER_REQUIRE_ARRAY)); +var_dump($res); + +$var = array(12); +$res = filter_var($var, FILTER_VALIDATE_INT, array('flags'=>FILTER_FLAG_ALLOW_OCTAL|FILTER_FORCE_ARRAY)); +var_dump($res); + +?> +--EXPECT-- +int(12) +bool(false) +array(1) { + [0]=> + int(12) +} +bool(false) +array(1) { + [0]=> + int(12) +} +array(1) { + [0]=> + int(12) +} +array(1) { + [0]=> + int(12) +} diff --git a/ext/filter/tests/039.phpt b/ext/filter/tests/039.phpt new file mode 100644 index 0000000..ae883db --- /dev/null +++ b/ext/filter/tests/039.phpt @@ -0,0 +1,117 @@ +--TEST-- +filter_var_array() and different arguments +--SKIPIF-- +<?php if (!extension_loaded("filter")) print "skip"; ?> +--FILE-- +<?php + +echo "-- (1)\n"; +var_dump(filter_var_array(NULL)); +var_dump(filter_var_array(array())); +var_dump(filter_var_array(array(1,"blah"=>"hoho"))); +var_dump(filter_var_array(array(), -1)); +var_dump(filter_var_array(array(), 1000000)); +var_dump(filter_var_array(array(), "")); + +echo "-- (2)\n"; +var_dump(filter_var_array(array(""=>""), -1)); +var_dump(filter_var_array(array(""=>""), 1000000)); +var_dump(filter_var_array(array(""=>""), "")); + +echo "-- (3)\n"; +var_dump(filter_var_array(array("aaa"=>"bbb"), -1)); +var_dump(filter_var_array(array("aaa"=>"bbb"), 1000000)); +var_dump(filter_var_array(array("aaa"=>"bbb"), "")); + +echo "-- (4)\n"; +var_dump(filter_var_array(array(), new stdclass)); +var_dump(filter_var_array(array(), array())); +var_dump(filter_var_array(array(), array("var_name"=>1))); +var_dump(filter_var_array(array(), array("var_name"=>-1))); +var_dump(filter_var_array(array("var_name"=>""), array("var_name"=>-1))); + +echo "-- (5)\n"; +var_dump(filter_var_array(array("var_name"=>""), array("var_name"=>-1, "asdas"=>"asdasd", "qwe"=>"rty", ""=>""))); +var_dump(filter_var_array(array("asdas"=>"text"), array("var_name"=>-1, "asdas"=>"asdasd", "qwe"=>"rty", ""=>""))); + + +$a = array(""=>""); $b = -1; +var_dump(filter_var_array($a, $b)); +var_dump($a, $b); + +$a = array(""=>""); $b = 100000; +var_dump(filter_var_array($a, $b)); +var_dump($a, $b); + +$a = array(""=>""); $b = ""; +var_dump(filter_var_array($a, $b)); +var_dump($a, $b); + +echo "Done\n"; +?> +--EXPECTF-- +-- (1) + +Warning: filter_var_array() expects parameter 1 to be array, null given in %s on line %d +NULL +array(0) { +} +array(2) { + [0]=> + string(1) "1" + ["blah"]=> + string(4) "hoho" +} +bool(false) +bool(false) +bool(false) +-- (2) +bool(false) +bool(false) +bool(false) +-- (3) +bool(false) +bool(false) +bool(false) +-- (4) +bool(false) +array(0) { +} +array(1) { + ["var_name"]=> + NULL +} +array(1) { + ["var_name"]=> + NULL +} +array(1) { + ["var_name"]=> + string(0) "" +} +-- (5) + +Warning: filter_var_array(): Empty keys are not allowed in the definition array in %s on line %d +bool(false) + +Warning: filter_var_array(): Empty keys are not allowed in the definition array in %s on line %d +bool(false) +bool(false) +array(1) { + [""]=> + string(0) "" +} +int(-1) +bool(false) +array(1) { + [""]=> + string(0) "" +} +int(100000) +bool(false) +array(1) { + [""]=> + string(0) "" +} +string(0) "" +Done diff --git a/ext/filter/tests/040.phpt b/ext/filter/tests/040.phpt new file mode 100644 index 0000000..fd39b36 --- /dev/null +++ b/ext/filter/tests/040.phpt @@ -0,0 +1,45 @@ +--TEST-- +filter_has_var() tests +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--GET-- +a=1&b=2&c=0 +--POST-- +ap[]=1&bp=test&cp= +--FILE-- +<?php + +var_dump(filter_has_var()); +var_dump(filter_has_var(INPUT_GET,"")); +var_dump(filter_has_var(INPUT_GET,array())); +var_dump(filter_has_var(INPUT_POST, "ap")); +var_dump(filter_has_var(INPUT_POST, "cp")); +var_dump(filter_has_var(INPUT_GET, "a")); +var_dump(filter_has_var(INPUT_GET, "c")); +var_dump(filter_has_var(INPUT_GET, "abc")); +var_dump(filter_has_var(INPUT_GET, "cc")); +var_dump(filter_has_var(-1, "cc")); +var_dump(filter_has_var(0, "cc")); +var_dump(filter_has_var("", "cc")); + +echo "Done\n"; +?> +--EXPECTF-- +Warning: filter_has_var() expects exactly 2 parameters, 0 given in %s on line %d +bool(false) +bool(false) + +Warning: filter_has_var() expects parameter 2 to be string, array given in %s on line %d +bool(false) +bool(true) +bool(true) +bool(true) +bool(true) +bool(false) +bool(false) +bool(false) +bool(false) + +Warning: filter_has_var() expects parameter 1 to be long, string given in %s on line %d +bool(false) +Done diff --git a/ext/filter/tests/041.phpt b/ext/filter/tests/041.phpt new file mode 100644 index 0000000..0a2e3f0 --- /dev/null +++ b/ext/filter/tests/041.phpt @@ -0,0 +1,34 @@ +--TEST-- +COOKIE multiple cookie test +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--INI-- +filter.default=stripped +filter.default_flags=0 +--COOKIE-- +abc=dir; def=true; abc=root; xyz="foo bar"; +--FILE-- +<?php +var_dump($_COOKIE); +var_dump(filter_has_var(INPUT_COOKIE, "abc")); +var_dump(filter_input(INPUT_COOKIE, "abc")); +var_dump(filter_input(INPUT_COOKIE, "def")); +var_dump(filter_input(INPUT_COOKIE, "xyz")); +var_dump(filter_has_var(INPUT_COOKIE, "bogus")); +var_dump(filter_input(INPUT_COOKIE, "xyz", FILTER_SANITIZE_SPECIAL_CHARS)); +?> +--EXPECT-- +array(3) { + ["abc"]=> + string(3) "dir" + ["def"]=> + string(4) "true" + ["xyz"]=> + string(17) ""foo bar"" +} +bool(true) +string(3) "dir" +string(4) "true" +string(9) ""foo bar"" +bool(false) +string(17) ""foo bar"" diff --git a/ext/filter/tests/042.phpt b/ext/filter/tests/042.phpt new file mode 100644 index 0000000..08f4dd6 --- /dev/null +++ b/ext/filter/tests/042.phpt @@ -0,0 +1,19 @@ +--TEST-- +Combination of strip & sanitize filters +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$var = 'XYZ< script>alert(/ext/filter+bypass/);< /script>ABC'; +$a = filter_var($var, FILTER_SANITIZE_STRING, array("flags" => FILTER_FLAG_STRIP_LOW)); +echo $a . "\n"; + +$var = 'XYZ< +script>alert(/ext/filter+bypass/);< +/script>ABC'; +$a = filter_var($var, FILTER_SANITIZE_STRING, array("flags" => FILTER_FLAG_STRIP_LOW)); +echo $a . "\n"; +?> +--EXPECT-- +XYZalert(/ext/filter+bypass/);ABC +XYZalert(/ext/filter+bypass/);ABC diff --git a/ext/filter/tests/043.phpt b/ext/filter/tests/043.phpt new file mode 100644 index 0000000..92ac051 --- /dev/null +++ b/ext/filter/tests/043.phpt @@ -0,0 +1,269 @@ +--TEST-- +Character encoding test +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$flags = FILTER_FLAG_ENCODE_AMP|FILTER_FLAG_ENCODE_LOW|FILTER_FLAG_ENCODE_HIGH; + +for ($i = 0; $i < 256; $i++) { + var_dump(filter_var(chr($i), FILTER_SANITIZE_STRING, array("flags" => $flags))); +} +?> +--EXPECT-- +string(4) "�" +string(4) "" +string(4) "" +string(4) "" +string(4) "" +string(4) "" +string(4) "" +string(4) "" +string(4) "" +string(4) "	" +string(5) " " +string(5) "" +string(5) "" +string(5) " " +string(5) "" +string(5) "" +string(5) "" +string(5) "" +string(5) "" +string(5) "" +string(5) "" +string(5) "" +string(5) "" +string(5) "" +string(5) "" +string(5) "" +string(5) "" +string(5) "" +string(5) "" +string(5) "" +string(5) "" +string(5) "" +string(1) " " +string(1) "!" +string(5) """ +string(1) "#" +string(1) "$" +string(1) "%" +string(5) "&" +string(5) "'" +string(1) "(" +string(1) ")" +string(1) "*" +string(1) "+" +string(1) "," +string(1) "-" +string(1) "." +string(1) "/" +string(1) "0" +string(1) "1" +string(1) "2" +string(1) "3" +string(1) "4" +string(1) "5" +string(1) "6" +string(1) "7" +string(1) "8" +string(1) "9" +string(1) ":" +string(1) ";" +string(0) "" +string(1) "=" +string(1) ">" +string(1) "?" +string(1) "@" +string(1) "A" +string(1) "B" +string(1) "C" +string(1) "D" +string(1) "E" +string(1) "F" +string(1) "G" +string(1) "H" +string(1) "I" +string(1) "J" +string(1) "K" +string(1) "L" +string(1) "M" +string(1) "N" +string(1) "O" +string(1) "P" +string(1) "Q" +string(1) "R" +string(1) "S" +string(1) "T" +string(1) "U" +string(1) "V" +string(1) "W" +string(1) "X" +string(1) "Y" +string(1) "Z" +string(1) "[" +string(1) "\" +string(1) "]" +string(1) "^" +string(1) "_" +string(1) "`" +string(1) "a" +string(1) "b" +string(1) "c" +string(1) "d" +string(1) "e" +string(1) "f" +string(1) "g" +string(1) "h" +string(1) "i" +string(1) "j" +string(1) "k" +string(1) "l" +string(1) "m" +string(1) "n" +string(1) "o" +string(1) "p" +string(1) "q" +string(1) "r" +string(1) "s" +string(1) "t" +string(1) "u" +string(1) "v" +string(1) "w" +string(1) "x" +string(1) "y" +string(1) "z" +string(1) "{" +string(1) "|" +string(1) "}" +string(1) "~" +string(6) "" +string(6) "€" +string(6) "" +string(6) "‚" +string(6) "ƒ" +string(6) "„" +string(6) "…" +string(6) "†" +string(6) "‡" +string(6) "ˆ" +string(6) "‰" +string(6) "Š" +string(6) "‹" +string(6) "Œ" +string(6) "" +string(6) "Ž" +string(6) "" +string(6) "" +string(6) "‘" +string(6) "’" +string(6) "“" +string(6) "”" +string(6) "•" +string(6) "–" +string(6) "—" +string(6) "˜" +string(6) "™" +string(6) "š" +string(6) "›" +string(6) "œ" +string(6) "" +string(6) "ž" +string(6) "Ÿ" +string(6) " " +string(6) "¡" +string(6) "¢" +string(6) "£" +string(6) "¤" +string(6) "¥" +string(6) "¦" +string(6) "§" +string(6) "¨" +string(6) "©" +string(6) "ª" +string(6) "«" +string(6) "¬" +string(6) "­" +string(6) "®" +string(6) "¯" +string(6) "°" +string(6) "±" +string(6) "²" +string(6) "³" +string(6) "´" +string(6) "µ" +string(6) "¶" +string(6) "·" +string(6) "¸" +string(6) "¹" +string(6) "º" +string(6) "»" +string(6) "¼" +string(6) "½" +string(6) "¾" +string(6) "¿" +string(6) "À" +string(6) "Á" +string(6) "Â" +string(6) "Ã" +string(6) "Ä" +string(6) "Å" +string(6) "Æ" +string(6) "Ç" +string(6) "È" +string(6) "É" +string(6) "Ê" +string(6) "Ë" +string(6) "Ì" +string(6) "Í" +string(6) "Î" +string(6) "Ï" +string(6) "Ð" +string(6) "Ñ" +string(6) "Ò" +string(6) "Ó" +string(6) "Ô" +string(6) "Õ" +string(6) "Ö" +string(6) "×" +string(6) "Ø" +string(6) "Ù" +string(6) "Ú" +string(6) "Û" +string(6) "Ü" +string(6) "Ý" +string(6) "Þ" +string(6) "ß" +string(6) "à" +string(6) "á" +string(6) "â" +string(6) "ã" +string(6) "ä" +string(6) "å" +string(6) "æ" +string(6) "ç" +string(6) "è" +string(6) "é" +string(6) "ê" +string(6) "ë" +string(6) "ì" +string(6) "í" +string(6) "î" +string(6) "ï" +string(6) "ð" +string(6) "ñ" +string(6) "ò" +string(6) "ó" +string(6) "ô" +string(6) "õ" +string(6) "ö" +string(6) "÷" +string(6) "ø" +string(6) "ù" +string(6) "ú" +string(6) "û" +string(6) "ü" +string(6) "ý" +string(6) "þ" +string(6) "ÿ" diff --git a/ext/filter/tests/044.phpt b/ext/filter/tests/044.phpt new file mode 100644 index 0000000..ff46893 --- /dev/null +++ b/ext/filter/tests/044.phpt @@ -0,0 +1,25 @@ +--TEST-- +Integer validation with spaces +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--INI-- +precision=14 +--FILE-- +<?php +$vals = array( +" + ", +" ", +" 123", +" 123.01 ", +); + +foreach ($vals as $var) { + var_dump(filter_var($var, FILTER_VALIDATE_FLOAT)); +} +?> +--EXPECT-- +bool(false) +bool(false) +float(123) +float(123.01) diff --git a/ext/filter/tests/045.phpt b/ext/filter/tests/045.phpt new file mode 100644 index 0000000..ad8f47e --- /dev/null +++ b/ext/filter/tests/045.phpt @@ -0,0 +1,30 @@ +--TEST-- +Options must not be changed by filter_var() +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$a = array("flags"=>(string)FILTER_FLAG_ALLOW_HEX, "options" => array("min_range"=>"0", "max_range"=>"1024")); +$ret = filter_var("0xff", FILTER_VALIDATE_INT, $a); +echo ($ret === 255 && $a["options"]["min_range"] === "0")?"ok\n":"bug\n"; +echo ($ret === 255 && $a["options"]["max_range"] === "1024")?"ok\n":"bug\n"; +echo ($ret === 255 && is_string($a["flags"]) && $a["flags"] == FILTER_FLAG_ALLOW_HEX)?"ok\n":"bug\n"; +$a = (string)FILTER_FLAG_ALLOW_HEX; +$ret = filter_var("0xff", FILTER_VALIDATE_INT, $a); +echo ($ret === 255 && is_string($a) && $a == FILTER_FLAG_ALLOW_HEX)?"ok\n":"bug\n"; +$a = array("test"=>array("filter"=>(string)FILTER_VALIDATE_INT, "flags"=>(string)FILTER_FLAG_ALLOW_HEX)); +$ret = filter_var_array(array("test"=>"0xff"), $a); +echo ($ret["test"] === 255 && is_string($a["test"]["filter"]) && $a["test"]["filter"] == FILTER_VALIDATE_INT)?"ok\n":"bug\n"; +echo ($ret["test"] === 255 && is_string($a["test"]["flags"]) && $a["test"]["flags"] == FILTER_FLAG_ALLOW_HEX)?"ok\n":"bug\n"; +$a = array("test"=>(string)FILTER_VALIDATE_INT); +$ret = filter_var_array(array("test"=>"255"), $a); +echo ($ret["test"] === 255 && is_string($a["test"]) && $a["test"] == FILTER_VALIDATE_INT)?"ok\n":"bug\n"; +?> +--EXPECT-- +ok +ok +ok +ok +ok +ok +ok diff --git a/ext/filter/tests/046.phpt b/ext/filter/tests/046.phpt new file mode 100644 index 0000000..bc45442 --- /dev/null +++ b/ext/filter/tests/046.phpt @@ -0,0 +1,49 @@ +--TEST-- +Integer overflow +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$max = sprintf("%d", PHP_INT_MAX); +switch($max) { +case "2147483647": /* 32-bit systems */ + $min = "-2147483648"; + $overflow = "2147483648"; + $underflow = "-2147483649"; + break; +case "9223372036854775807": /* 64-bit systems */ + $min = "-9223372036854775808"; + $overflow = "9223372036854775808"; + $underflow = "-9223372036854775809"; + break; +default: + die("failed: unknown value for PHP_MAX_INT"); + break; +} + +function test_validation($val, $msg) { + $f = filter_var($val, FILTER_VALIDATE_INT); + echo "$msg filtered: "; var_dump($f); // filtered value (or false) + echo "$msg is_long: "; var_dump(is_long($f)); // test validation + echo "$msg equal: "; var_dump($val == $f); // test equality of result +} + +// PHP_INT_MAX +test_validation($max, "max"); +test_validation($overflow, "overflow"); +test_validation($min, "min"); +test_validation($underflow, "underflow"); +?> +--EXPECTF-- +max filtered: int(%d) +max is_long: bool(true) +max equal: bool(true) +overflow filtered: bool(false) +overflow is_long: bool(false) +overflow equal: bool(false) +min filtered: int(-%d) +min is_long: bool(true) +min equal: bool(true) +underflow filtered: bool(false) +underflow is_long: bool(false) +underflow equal: bool(false) diff --git a/ext/filter/tests/047.phpt b/ext/filter/tests/047.phpt new file mode 100644 index 0000000..cc41eab --- /dev/null +++ b/ext/filter/tests/047.phpt @@ -0,0 +1,37 @@ +--TEST-- +Octal integer overflow +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +function octal_inc($s) { + $len = strlen($s); + while ($len > 0) { + $len--; + if ($s[$len] != '7') { + $s[$len] = $s[$len] + 1; + return $s; + } + $s[$len] = '0'; + } + return '1'.$s; +} + + +$s = sprintf("%o", PHP_INT_MAX); +var_dump(is_long(filter_var('0'.$s, FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_OCTAL)))); + +$s = octal_inc($s); +var_dump(is_long(filter_var('0'.$s, FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_OCTAL)))); + +$s = sprintf("%o", ~0); +var_dump(is_long(filter_var('0'.$s, FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_OCTAL)))); + +$s = octal_inc($s); +var_dump(filter_var('0'.$s, FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_OCTAL))); +?> +--EXPECT-- +bool(true) +bool(true) +bool(true) +bool(false) diff --git a/ext/filter/tests/048.phpt b/ext/filter/tests/048.phpt new file mode 100644 index 0000000..92ab690 --- /dev/null +++ b/ext/filter/tests/048.phpt @@ -0,0 +1,41 @@ +--TEST-- +Hex integer overflow +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +function hex_inc($s) { + $len = strlen($s); + while ($len > 0) { + $len--; + if ($s[$len] != 'f') { + if ($s[$len] == '9') { + $s[$len] = 'a'; + } else { + $s[$len] = $s[$len] + 1; + } + return $s; + } + $s[$len] = '0'; + } + return '1'.$s; +} + + +$s = sprintf("%x", PHP_INT_MAX); +var_dump(is_long(filter_var('0x'.$s, FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX)))); + +$s = hex_inc($s); +var_dump(is_long(filter_var('0x'.$s, FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX)))); + +$s = sprintf("%x", ~0); +var_dump(is_long(filter_var('0x'.$s, FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX)))); + +$s = hex_inc($s); +var_dump(filter_var('0x'.$s, FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX))); +?> +--EXPECT-- +bool(true) +bool(true) +bool(true) +bool(false) diff --git a/ext/filter/tests/049.phpt b/ext/filter/tests/049.phpt new file mode 100644 index 0000000..5a9977b --- /dev/null +++ b/ext/filter/tests/049.phpt @@ -0,0 +1,34 @@ +--TEST-- +filter_var() and doubles with thousend separators +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$test = array( + '0' => 0.0, + '12345678900.1234567165' => 12345678900.1234567165, + '1,234,567,890.1234567165' => 1234567890.1234567165, + '-1,234,567,890.1234567165' => -1234567890.1234567165, + '1234,567,890.1234567165' => false, + '1,234,567,89.1234567165' => false, + '1,234,567,8900.1234567165' => false, + '1.234.567.890.1234567165' => false, + '1,234,567,8900.123,456' => false, +); +foreach ($test as $src => $dst) { + $out = filter_var($src, FILTER_VALIDATE_FLOAT, array("flags"=>FILTER_FLAG_ALLOW_THOUSAND)); + if ($dst !== $out) { + if ($out === false) { + echo "$src -> false != $dst\n"; + } elseif ($dst === false) { + echo "$src -> $out != false\n"; + } else { + echo "$src -> $out != $dst\n"; + } + } +} + +echo "Ok\n"; +?> +--EXPECT-- +Ok diff --git a/ext/filter/tests/050.phpt b/ext/filter/tests/050.phpt new file mode 100644 index 0000000..69a269f --- /dev/null +++ b/ext/filter/tests/050.phpt @@ -0,0 +1,29 @@ +--TEST-- +filter_var() and double overflow/underflow +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$test = array( + '1e+308' => 1e+308, + '1e+309' => false, + '1e-323' => 1e-323, + '1e-324' => false, +); +foreach ($test as $src => $dst) { + $out = filter_var($src, FILTER_VALIDATE_FLOAT); + if ($dst !== $out) { + if ($out === false) { + echo "$src -> false != $dst\n"; + } elseif ($dst === false) { + echo "$src -> $out != false\n"; + } else { + echo "$src -> $out != $dst\n"; + } + } +} + +echo "Ok\n"; +?> +--EXPECT-- +Ok diff --git a/ext/filter/tests/051.phpt b/ext/filter/tests/051.phpt new file mode 100644 index 0000000..e34289d --- /dev/null +++ b/ext/filter/tests/051.phpt @@ -0,0 +1,11 @@ +--TEST-- +filter_var() and default values +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$tmp = $default = 321; +var_dump(filter_var("123asd", FILTER_VALIDATE_INT, array("options"=>array("default"=>$default)))); +?> +--EXPECT-- +int(321) diff --git a/ext/filter/tests/052.phpt b/ext/filter/tests/052.phpt new file mode 100644 index 0000000..257613e --- /dev/null +++ b/ext/filter/tests/052.phpt @@ -0,0 +1,73 @@ +--TEST-- +filter_var() / filter_var_array() and passed data integrity +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +function filter_cb($var) +{ + return 1; +} + +$data = array ('bar' => array ('fu<script>bar', 'bar<script>fu') ); +var_dump(filter_var($data, FILTER_SANITIZE_STRING, FILTER_FORCE_ARRAY)); +var_dump($data); +var_dump(filter_var($data, FILTER_CALLBACK, array('options' => 'filter_cb'))); +var_dump($data); +var_dump(filter_var_array($data, array('bar' => array('filter' => FILTER_CALLBACK, 'options' => 'filter_cb')))); +var_dump($data); +--EXPECT-- +array(1) { + ["bar"]=> + array(2) { + [0]=> + string(5) "fubar" + [1]=> + string(5) "barfu" + } +} +array(1) { + ["bar"]=> + array(2) { + [0]=> + string(13) "fu<script>bar" + [1]=> + string(13) "bar<script>fu" + } +} +array(1) { + ["bar"]=> + array(2) { + [0]=> + int(1) + [1]=> + int(1) + } +} +array(1) { + ["bar"]=> + array(2) { + [0]=> + string(13) "fu<script>bar" + [1]=> + string(13) "bar<script>fu" + } +} +array(1) { + ["bar"]=> + array(2) { + [0]=> + int(1) + [1]=> + int(1) + } +} +array(1) { + ["bar"]=> + array(2) { + [0]=> + string(13) "fu<script>bar" + [1]=> + string(13) "bar<script>fu" + } +} diff --git a/ext/filter/tests/053.phpt b/ext/filter/tests/053.phpt new file mode 100644 index 0000000..a179f3e --- /dev/null +++ b/ext/filter/tests/053.phpt @@ -0,0 +1,17 @@ +--TEST-- +filter_var() - using callback +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +function filter_test($str) { return FALSE; } +filter_var('durty/boy', FILTER_CALLBACK, array( + 'options' => 'filter_test', +)); + +print "Done\n"; + +?> +--EXPECTF-- +Done diff --git a/ext/filter/tests/054.phpt b/ext/filter/tests/054.phpt new file mode 100644 index 0000000..c8a5dad --- /dev/null +++ b/ext/filter/tests/054.phpt @@ -0,0 +1,26 @@ +--TEST-- +filter_var_array() - using the add_empty option +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +$data = array('foo' => 123); + +var_dump( + filter_var_array($data, array('foo' => array('filter' => FILTER_DEFAULT), 'bar' => array('filter' => FILTER_DEFAULT)), false), + filter_var_array($data, array('foo' => array('filter' => FILTER_DEFAULT), 'bar' => array('filter' => FILTER_DEFAULT))) +); + +?> +--EXPECT-- +array(1) { + ["foo"]=> + string(3) "123" +} +array(2) { + ["foo"]=> + string(3) "123" + ["bar"]=> + NULL +} diff --git a/ext/filter/tests/PMOPB45.phpt b/ext/filter/tests/PMOPB45.phpt new file mode 100644 index 0000000..532eb21 --- /dev/null +++ b/ext/filter/tests/PMOPB45.phpt @@ -0,0 +1,11 @@ +--TEST-- +PMOPB-45-2007:PHP ext/filter Email Validation Vulnerability +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + $var = "test@example.com\n"; + var_dump(filter_var($var, FILTER_VALIDATE_EMAIL)); +?> +--EXPECT-- +bool(false) diff --git a/ext/filter/tests/bug39846.phpt b/ext/filter/tests/bug39846.phpt new file mode 100644 index 0000000..57407f1 --- /dev/null +++ b/ext/filter/tests/bug39846.phpt @@ -0,0 +1,12 @@ +--TEST-- +Bug #39846 (ipv4 trailing data validation) +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +var_dump(filter_var('192.168.1.100random-text-here', FILTER_VALIDATE_IP)); +var_dump(filter_var("192.168.1.155\0foo", FILTER_VALIDATE_IP)); +?> +--EXPECT-- +bool(false) +bool(false) diff --git a/ext/filter/tests/bug42718-2.phpt b/ext/filter/tests/bug42718-2.phpt new file mode 100644 index 0000000..ed21068 --- /dev/null +++ b/ext/filter/tests/bug42718-2.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #42718 - 2 (unsafe_raw filter not applied when configured as default filter) +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--INI-- +display_errors=0 +filter.default=unsafe_raw +filter.default_flags= +--GET-- +a=1%00 +--FILE-- +<?php +echo ini_get('filter.default') . "\n"; +echo ini_get('filter.default_flags') . "\n"; +?> +--EXPECT-- +unsafe_raw + diff --git a/ext/filter/tests/bug42718.phpt b/ext/filter/tests/bug42718.phpt new file mode 100644 index 0000000..ba56d39 --- /dev/null +++ b/ext/filter/tests/bug42718.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #42718 (unsafe_raw filter not applied when configured as default filter) +--XFAIL-- +FILTER_UNSAFE_RAW not applied when configured as default filter, even with flags +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--INI-- +filter.default=unsafe_raw +filter.default_flags=4 +--GET-- +a=1%00 +--FILE-- +<?php +echo ini_get('filter.default') . "\n"; +echo ini_get('filter.default_flags') . "\n"; +var_dump(FILTER_FLAG_STRIP_LOW == 4); +echo addcslashes($_GET['a'],"\0") . "\n"; +?> +--EXPECT-- +unsafe_raw +4 +bool(true) +1 diff --git a/ext/filter/tests/bug44445.phpt b/ext/filter/tests/bug44445.phpt new file mode 100644 index 0000000..36a8641 --- /dev/null +++ b/ext/filter/tests/bug44445.phpt @@ -0,0 +1,12 @@ +--TEST-- +Bug #44445 (email validator does not handle domains starting/ending with a -) +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +var_dump(filter_var("foo@-foo.com",FILTER_VALIDATE_EMAIL)); +var_dump(filter_var("foo@foo-.com",FILTER_VALIDATE_EMAIL)); +?> +--EXPECT-- +bool(false) +bool(false) diff --git a/ext/filter/tests/bug44779.phpt b/ext/filter/tests/bug44779.phpt new file mode 100644 index 0000000..65a1e09 --- /dev/null +++ b/ext/filter/tests/bug44779.phpt @@ -0,0 +1,10 @@ +--TEST-- +Bug #44779 (filter returns NULL in CLI when it shouldn't) +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +var_dump(filter_input(INPUT_SERVER, "PHP_SELF")); +?> +--EXPECTF-- +%unicode|string%(%d) "%s" diff --git a/ext/filter/tests/bug46973.phpt b/ext/filter/tests/bug46973.phpt new file mode 100644 index 0000000..eacacf5 --- /dev/null +++ b/ext/filter/tests/bug46973.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug #46973 (IPv6 address filter rejects valid address) +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +var_dump(filter_var('1fff::a88:85a3::172.31.128.1', FILTER_VALIDATE_IP,FILTER_FLAG_IPV6)); +var_dump(filter_var('3ffe:6a88:85a3:08d3:1319:8a2e:0370:7344', FILTER_VALIDATE_IP,FILTER_FLAG_IPV6)); +var_dump(filter_var('1fff::a88:85a3::172.31.128.1', FILTER_VALIDATE_IP,FILTER_FLAG_IPV6)); + +?> +--EXPECTF-- +bool(false) +string(39) "3ffe:6a88:85a3:08d3:1319:8a2e:0370:7344" +bool(false) diff --git a/ext/filter/tests/bug47435.phpt b/ext/filter/tests/bug47435.phpt new file mode 100644 index 0000000..957a001 --- /dev/null +++ b/ext/filter/tests/bug47435.phpt @@ -0,0 +1,36 @@ +--TEST--
+Bug #47435 (FILTER_FLAG_NO_PRIV_RANGE and FILTER_FLAG_NO_RES_RANGE don't work with ipv6)
+--SKIPIF--
+<?php if (!extension_loaded("filter")) die("skip"); ?>
+--FILE--
+<?php
+var_dump(filter_var("FC00::1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6));
+var_dump(filter_var("FC00::1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE));
+var_dump(filter_var("::", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6));
+var_dump(filter_var("::", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 | FILTER_FLAG_NO_RES_RANGE));
+var_dump(filter_var("::1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6));
+var_dump(filter_var("::1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 | FILTER_FLAG_NO_RES_RANGE));
+var_dump(filter_var("fe8:5:6::1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6));
+var_dump(filter_var("fe8:5:6::1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 | FILTER_FLAG_NO_RES_RANGE));
+var_dump(filter_var("2001:0db8::1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6));
+var_dump(filter_var("2001:0db8::1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 | FILTER_FLAG_NO_RES_RANGE));
+var_dump(filter_var("5f::1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6));
+var_dump(filter_var("5f::1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 | FILTER_FLAG_NO_RES_RANGE));
+var_dump(filter_var("3ff3::1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6));
+var_dump(filter_var("3ff3::1", FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 | FILTER_FLAG_NO_RES_RANGE));
+?>
+--EXPECT--
+string(7) "FC00::1"
+bool(false)
+string(2) "::"
+bool(false)
+string(3) "::1"
+bool(false)
+string(10) "fe8:5:6::1"
+bool(false)
+string(12) "2001:0db8::1"
+bool(false)
+string(5) "5f::1"
+bool(false)
+string(7) "3ff3::1"
+bool(false)
diff --git a/ext/filter/tests/bug47745.phpt b/ext/filter/tests/bug47745.phpt new file mode 100644 index 0000000..feb0c2b --- /dev/null +++ b/ext/filter/tests/bug47745.phpt @@ -0,0 +1,13 @@ +--TEST-- +Bug #47745 (FILTER_VALIDATE_INT doesn't allow minimum integer) +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$s = (string)(-PHP_INT_MAX-1); +var_dump(intval($s)); +var_dump(filter_var($s, FILTER_VALIDATE_INT)); +?> +--EXPECTF-- +int(-%d) +int(-%d) diff --git a/ext/filter/tests/bug48762.phpt b/ext/filter/tests/bug48762.phpt new file mode 100644 index 0000000..195a616 --- /dev/null +++ b/ext/filter/tests/bug48762.phpt @@ -0,0 +1,14 @@ +--TEST-- +Bug #48762 (IPv6 address filter still rejects valid address) +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +var_dump(filter_var('0b15:23::3:67.98.234.17', FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)); +var_dump(filter_var('::67:78b:34.43.43.2', FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)); + +?> +--EXPECT-- +string(23) "0b15:23::3:67.98.234.17" +string(19) "::67:78b:34.43.43.2" diff --git a/ext/filter/tests/bug49274.phpt b/ext/filter/tests/bug49274.phpt new file mode 100644 index 0000000..c87e6be --- /dev/null +++ b/ext/filter/tests/bug49274.phpt @@ -0,0 +1,10 @@ +--TEST--
+#49274, fatal error when an object does not implement toString
+--SKIPIF--
+<?php if (!extension_loaded("filter")) die("skip"); ?>
+--FILE--
+<?php
+var_dump(filter_var(new stdClass, FILTER_VALIDATE_EMAIL));
+?>
+--EXPECTF--
+bool(false)
diff --git a/ext/filter/tests/bug49510.phpt b/ext/filter/tests/bug49510.phpt new file mode 100644 index 0000000..3f365cc --- /dev/null +++ b/ext/filter/tests/bug49510.phpt @@ -0,0 +1,36 @@ +--TEST-- +#49510 boolean validation fails with FILTER_NULL_ON_FAILURE +--FILE-- +<?php +var_dump(filter_var(false, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)); +var_dump(filter_var(0, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)); +var_dump(filter_var("0", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)); +var_dump(filter_var("off", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)); +var_dump(filter_var("", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)); +var_dump(filter_var("false", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)); +var_dump(filter_var("no", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)); + +var_dump(filter_var(true, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)); +var_dump(filter_var(1, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)); +var_dump(filter_var("1", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)); +var_dump(filter_var("on", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)); +var_dump(filter_var("yes", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)); + +var_dump(filter_var("invalid", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)); +?> +==DONE== +--EXPECT-- +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +NULL +==DONE== diff --git a/ext/filter/tests/bug50158.phpt b/ext/filter/tests/bug50158.phpt new file mode 100644 index 0000000..72c31a7 --- /dev/null +++ b/ext/filter/tests/bug50158.phpt @@ -0,0 +1,25 @@ +--TEST-- +Bug #50158 (FILTER_VALIDATE_EMAIL fails with valid addresses containing = or ?) +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +$email_address = "test=mail@example.com"; +var_dump(filter_var($email_address, FILTER_VALIDATE_EMAIL)); + +$email_address = "test-mail@example.com"; +var_dump(filter_var($email_address, FILTER_VALIDATE_EMAIL)); + +$email_address = "test+mail@example.com"; +var_dump(filter_var($email_address, FILTER_VALIDATE_EMAIL)); + +$email_address = "test?mail@example.com"; +var_dump(filter_var($email_address, FILTER_VALIDATE_EMAIL)); + +?> +--EXPECTF-- +%unicode|string%(21) "test=mail@example.com" +%unicode|string%(21) "test-mail@example.com" +%unicode|string%(21) "test+mail@example.com" +%unicode|string%(21) "test?mail@example.com" diff --git a/ext/filter/tests/bug50632.phpt b/ext/filter/tests/bug50632.phpt new file mode 100644 index 0000000..2f33b91 --- /dev/null +++ b/ext/filter/tests/bug50632.phpt @@ -0,0 +1,11 @@ +--TEST-- +bug 50632, filter_input() does not return default value if the variable does not exist +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$foo = filter_input(INPUT_GET, 'foo', FILTER_VALIDATE_INT, array('flags' => FILTER_REQUIRE_SCALAR, 'options' => array('default' => 23))); +var_dump($foo); +?> +--EXPECT-- +int(23) diff --git a/ext/filter/tests/bug51192.phpt b/ext/filter/tests/bug51192.phpt new file mode 100644 index 0000000..96c67ea --- /dev/null +++ b/ext/filter/tests/bug51192.phpt @@ -0,0 +1,13 @@ +--TEST-- +bug 51192, FILTER_VALIDATE_URL will invalidate a hostname that includes '-' +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +var_dump(filter_var('http://example.com/path', FILTER_VALIDATE_URL)); +var_dump(filter_var('http://exa-mple.com/path', FILTER_VALIDATE_URL)); +var_dump(filter_var('http://exa_mple.com/path', FILTER_VALIDATE_URL)); +--EXPECT-- +string(23) "http://example.com/path" +string(24) "http://exa-mple.com/path" +bool(false) diff --git a/ext/filter/tests/bug52209.phpt b/ext/filter/tests/bug52209.phpt new file mode 100644 index 0000000..79db749 --- /dev/null +++ b/ext/filter/tests/bug52209.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #52209 (INPUT_ENV returns NULL for set variables (CLI)) +--SKIPIF-- +<?php +/* This test makes no sense on windows as an empty variable + would never show up in the "set" list. Which means, it's + always undefined in PHP. */ +if(substr(PHP_OS, 0, 3) == "WIN") die("skip Not for Windows"); +if (!extension_loaded("filter") || !empty($_ENV['PWD'])) die("skip"); +?> +--INI-- +variables_order=GPCSE +--FILE-- +<?php + var_dump(filter_input(INPUT_ENV, 'PWD')); +?> +--EXPECTF-- +string(%d) "%s" diff --git a/ext/filter/tests/bug52929.phpt b/ext/filter/tests/bug52929.phpt new file mode 100644 index 0000000..2933295 --- /dev/null +++ b/ext/filter/tests/bug52929.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #52929 (Segfault in filter_var with FILTER_VALIDATE_EMAIL with large amount of data) +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +var_dump(filter_var('valid@email.address', FILTER_VALIDATE_EMAIL)); + +// Beyond the allowable limit for an e-mail address. +var_dump(filter_var('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy.zz', FILTER_VALIDATE_EMAIL)); + +// An invalid address likely to crash PHP due to stack exhaustion if it goes to +// the validation regex. +var_dump(filter_var(str_repeat('x', 8000), FILTER_VALIDATE_EMAIL)); +--EXPECT-- +string(19) "valid@email.address" +bool(false) +bool(false) diff --git a/ext/filter/tests/bug53037.phpt b/ext/filter/tests/bug53037.phpt new file mode 100644 index 0000000..4a1e9e3 --- /dev/null +++ b/ext/filter/tests/bug53037.phpt @@ -0,0 +1,14 @@ +--TEST-- +Bug #53037 (FILTER_FLAG_EMPTY_STRING_NULL is not implemented) +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +var_dump( + filter_var("", FILTER_DEFAULT), + filter_var("", FILTER_DEFAULT, array('flags' => FILTER_FLAG_EMPTY_STRING_NULL)) +); +?> +--EXPECT-- +string(0) "" +NULL diff --git a/ext/filter/tests/bug53150.phpt b/ext/filter/tests/bug53150.phpt new file mode 100644 index 0000000..4baa4db --- /dev/null +++ b/ext/filter/tests/bug53150.phpt @@ -0,0 +1,28 @@ +--TEST-- +Bug #53150 (FILTER_FLAG_NO_RES_RANGE is missing some IP ranges) +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +var_dump(filter_var('127.0.0.1', FILTER_VALIDATE_IP)); +var_dump(filter_var("::1", FILTER_VALIDATE_IP)); + +var_dump(filter_var('127.0.0.1', FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)); +var_dump(filter_var('::1', FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)); + +var_dump(filter_var('128.0.0.1', FILTER_VALIDATE_IP)); +var_dump(filter_var('128.0.0.1', FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)); + +var_dump(filter_var('191.255.0.0', FILTER_VALIDATE_IP)); +var_dump(filter_var('191.255.0.0', FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)); + +?> +--EXPECT-- +string(9) "127.0.0.1" +string(3) "::1" +bool(false) +bool(false) +string(9) "128.0.0.1" +bool(false) +string(11) "191.255.0.0" +bool(false) diff --git a/ext/filter/tests/bug55478.phpt b/ext/filter/tests/bug55478.phpt new file mode 100644 index 0000000..243d707 --- /dev/null +++ b/ext/filter/tests/bug55478.phpt @@ -0,0 +1,11 @@ +--TEST-- +Bug #55478 (FILTER_VALIDATE_EMAIL fails with internationalized domain name addresses containing >1 -) +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$email_address = "test@xn--example--7za.de"; // "example-รค.de" +var_dump(filter_var($email_address, FILTER_VALIDATE_EMAIL)); +?> +--EXPECT-- +string(24) "test@xn--example--7za.de" diff --git a/ext/filter/tests/bug7586.phpt b/ext/filter/tests/bug7586.phpt new file mode 100644 index 0000000..74e55ff --- /dev/null +++ b/ext/filter/tests/bug7586.phpt @@ -0,0 +1,55 @@ +--TEST-- +input_get_args() filter not reseted between elements +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$data = array( + 'product_id' => 'libgd<script>', + 'component' => '10dhsajkkdhk <do>', + 'versions' => '2.0.33', + 'testscalar' => array('2','23','10','12'), + 'testarray' => '2', +); + +$args = array( + 'product_id' => FILTER_SANITIZE_ENCODED, + 'component' => array('flags' => FILTER_FORCE_ARRAY, + 'options' => array("min_range"=>1, "max_range"=>10) + ), + 'versions' => array( + 'filter' => FILTER_SANITIZE_ENCODED, + 'flags' => FILTER_REQUIRE_SCALAR, + ), + 'doesnotexist' => FILTER_VALIDATE_INT, + 'testscalar' => FILTER_VALIDATE_INT, + 'testarray' => array( + 'filter' => FILTER_VALIDATE_INT, + 'flags' => FILTER_FORCE_ARRAY, + ) + +); +$out = filter_var_array($data, $args); +var_dump($out); +?> +--EXPECTF-- +array(6) { + ["product_id"]=> + string(17) "libgd%3Cscript%3E" + ["component"]=> + array(1) { + [0]=> + string(17) "%s" + } + ["versions"]=> + string(6) "2.0.33" + ["doesnotexist"]=> + NULL + ["testscalar"]=> + bool(false) + ["testarray"]=> + array(1) { + [0]=> + int(2) + } +} diff --git a/ext/filter/tests/bug7715.phpt b/ext/filter/tests/bug7715.phpt new file mode 100644 index 0000000..4298d50 --- /dev/null +++ b/ext/filter/tests/bug7715.phpt @@ -0,0 +1,33 @@ +--TEST-- +bug 7715, floats value with integer or incomplete input +--INI-- +precision=14 +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$data = array( + '.23', + '-42', + '+42', + '.4', + '-.4', + '1000000000000', + '-1000000000000', + '02.324' +); +foreach ($data as $val) { + $res = filter_var($val, FILTER_VALIDATE_FLOAT); + var_dump($res); +} +echo "\n"; +?> +--EXPECTF-- +float(0.23) +float(-42) +float(42) +float(0.4) +float(-0.4) +float(1000000000000) +float(-1000000000000) +float(2.324) diff --git a/ext/filter/tests/bug7733.phpt b/ext/filter/tests/bug7733.phpt new file mode 100644 index 0000000..ab02123 --- /dev/null +++ b/ext/filter/tests/bug7733.phpt @@ -0,0 +1,29 @@ +--TEST-- +filter_data() Float exponential weird result +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$data = array( + 'E2', + '10E', + '2E-', + 'E-2', + '+E2' + ); +$out = filter_var($data, FILTER_VALIDATE_FLOAT, FILTER_REQUIRE_ARRAY); +var_dump($out); +?> +--EXPECTF-- +array(5) { + [0]=> + bool(false) + [1]=> + bool(false) + [2]=> + bool(false) + [3]=> + bool(false) + [4]=> + bool(false) +} diff --git a/ext/filter/tests/bug8315.phpt b/ext/filter/tests/bug8315.phpt new file mode 100644 index 0000000..094d82f --- /dev/null +++ b/ext/filter/tests/bug8315.phpt @@ -0,0 +1,15 @@ +--TEST-- +bug 8315, NULL values halt the validation +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php + +$var="3".chr(0)."foo"; +var_dump(filter_var($var, FILTER_VALIDATE_INT)); +$var="3".chr(0)."foo"; +var_dump(filter_var($var, FILTER_VALIDATE_FLOAT)); +?> +--EXPECT-- +bool(false) +bool(false) diff --git a/ext/filter/tests/callback_closure.phpt b/ext/filter/tests/callback_closure.phpt new file mode 100644 index 0000000..e27a31b --- /dev/null +++ b/ext/filter/tests/callback_closure.phpt @@ -0,0 +1,14 @@ +--TEST-- +callback function is a closure +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +$callback = function ($var) { + return $var; +}; +$var = "test"; +var_dump(filter_var($var, FILTER_CALLBACK, array('options'=> $callback))); +?> +--EXPECT-- +string(4) "test" diff --git a/ext/filter/tests/callback_non_modified_var.phpt b/ext/filter/tests/callback_non_modified_var.phpt new file mode 100644 index 0000000..f0d5575 --- /dev/null +++ b/ext/filter/tests/callback_non_modified_var.phpt @@ -0,0 +1,14 @@ +--TEST-- +callback function returns non modified value +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--FILE-- +<?php +function callback($var) { + return $var; +} +$var = "test"; +var_dump(filter_var($var, FILTER_CALLBACK, array('options'=>'callback'))); +?> +--EXPECT-- +string(4) "test" diff --git a/ext/filter/tests/filter_data.phpt b/ext/filter/tests/filter_data.phpt new file mode 100644 index 0000000..f83d986 --- /dev/null +++ b/ext/filter/tests/filter_data.phpt @@ -0,0 +1,83 @@ +--TEST-- +Simple filter_var() tests +--SKIPIF-- +<?php if (!extension_loaded("filter")) die("skip"); ?> +--INI-- +precision=14 +--FILE-- +<?php + +/* Integer */ +$data = "-123"; var_dump(filter_var($data, FILTER_VALIDATE_INT)); +$data = "0"; var_dump(filter_var($data, FILTER_VALIDATE_INT)); +$data = "-0"; var_dump(filter_var($data, FILTER_VALIDATE_INT)); +$data = "+0"; var_dump(filter_var($data, FILTER_VALIDATE_INT)); +$data = "123"; var_dump(filter_var($data, FILTER_VALIDATE_INT)); +$data = -123; var_dump(filter_var($data, FILTER_VALIDATE_INT)); +$data = 0; var_dump(filter_var($data, FILTER_VALIDATE_INT)); +$data = -0; var_dump(filter_var($data, FILTER_VALIDATE_INT)); +$data = +0; var_dump(filter_var($data, FILTER_VALIDATE_INT)); +$data = 123; var_dump(filter_var($data, FILTER_VALIDATE_INT)); +$data = ""; var_dump(filter_var($data, FILTER_VALIDATE_INT)); +echo "\n"; + +/* Float */ +$data = "-0.123"; var_dump(filter_var($data, FILTER_VALIDATE_FLOAT)); +$data = "0.00"; var_dump(filter_var($data, FILTER_VALIDATE_FLOAT)); +$data = "1.23"; var_dump(filter_var($data, FILTER_VALIDATE_FLOAT)); +$data = -1.23; var_dump(filter_var($data, FILTER_VALIDATE_FLOAT)); +$data = 0.0; var_dump(filter_var($data, FILTER_VALIDATE_FLOAT)); +$data = 1.23; var_dump(filter_var($data, FILTER_VALIDATE_FLOAT)); +$data = ""; var_dump(filter_var($data, FILTER_VALIDATE_FLOAT)); +echo "\n"; + +/* Boolean */ +$data = "on"; var_dump(filter_var($data, FILTER_VALIDATE_BOOLEAN)); +$data = "off"; var_dump(filter_var($data, FILTER_VALIDATE_BOOLEAN)); +$data = "yes"; var_dump(filter_var($data, FILTER_VALIDATE_BOOLEAN)); +$data = "no"; var_dump(filter_var($data, FILTER_VALIDATE_BOOLEAN)); +$data = "true"; var_dump(filter_var($data, FILTER_VALIDATE_BOOLEAN)); +$data = "false"; var_dump(filter_var($data, FILTER_VALIDATE_BOOLEAN)); +$data = "1"; var_dump(filter_var($data, FILTER_VALIDATE_BOOLEAN)); +$data = "0"; var_dump(filter_var($data, FILTER_VALIDATE_BOOLEAN)); +$data = 1; var_dump(filter_var($data, FILTER_VALIDATE_BOOLEAN)); +$data = 0; var_dump(filter_var($data, FILTER_VALIDATE_BOOLEAN)); +$data = true; var_dump(filter_var($data, FILTER_VALIDATE_BOOLEAN)); +$data = false; var_dump(filter_var($data, FILTER_VALIDATE_BOOLEAN)); +$data = ""; var_dump(filter_var($data, FILTER_VALIDATE_BOOLEAN)); + +?> +--EXPECT-- +int(-123) +int(0) +int(0) +int(0) +int(123) +int(-123) +int(0) +int(0) +int(0) +int(123) +bool(false) + +float(-0.123) +float(0) +float(1.23) +float(-1.23) +float(0) +float(1.23) +bool(false) + +bool(true) +bool(false) +bool(true) +bool(false) +bool(true) +bool(false) +bool(true) +bool(false) +bool(true) +bool(false) +bool(true) +bool(false) +bool(false) |