]> granicus.if.org Git - php/commitdiff
Unify handling of return values on validation failure and var not found
authorIlia Alshanetsky <iliaa@php.net>
Tue, 17 Oct 2006 15:26:14 +0000 (15:26 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Tue, 17 Oct 2006 15:26:14 +0000 (15:26 +0000)
17 files changed:
ext/filter/filter.c
ext/filter/filter_private.h
ext/filter/logical_filters.c
ext/filter/tests/010.phpt
ext/filter/tests/012.phpt
ext/filter/tests/013.phpt
ext/filter/tests/014.phpt
ext/filter/tests/015.phpt
ext/filter/tests/016.phpt
ext/filter/tests/017.phpt
ext/filter/tests/018.phpt
ext/filter/tests/019.phpt
ext/filter/tests/030.phpt
ext/filter/tests/031.phpt
ext/filter/tests/034.phpt
ext/filter/tests/bug8315.phpt
ext/filter/tests/filter_data.phpt

index 95f1cce5305b06ea56551bd338908f5ff7612838..ab3070849d2fa958d8465fe77df0f59e1340db48 100644 (file)
@@ -182,6 +182,7 @@ PHP_MINIT_FUNCTION(filter)
        REGISTER_LONG_CONSTANT("FILTER_REQUIRE_SCALAR", FILTER_REQUIRE_SCALAR, CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("FILTER_REQUIRE_ARRAY", FILTER_REQUIRE_ARRAY, CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("FILTER_FORCE_ARRAY", FILTER_FORCE_ARRAY, CONST_CS | CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("FILTER_NULL_ON_FAILURE", FILTER_NULL_ON_FAILURE, CONST_CS | CONST_PERSISTENT);
 
        REGISTER_LONG_CONSTANT("FILTER_VALIDATE_INT", FILTER_VALIDATE_INT, CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("FILTER_VALIDATE_BOOLEAN", FILTER_VALIDATE_BOOLEAN, CONST_CS | CONST_PERSISTENT);
@@ -557,7 +558,11 @@ static void php_filter_call(zval **filtered, long filter, zval **filter_args, co
                                SEPARATE_ZVAL(filtered);
                        }
                        zval_dtor(*filtered);
-                       ZVAL_FALSE(*filtered);
+                       if (filter_flags & FILTER_NULL_ON_FAILURE) {
+                               ZVAL_NULL(*filtered);
+                       } else {
+                               ZVAL_FALSE(*filtered);
+                       }
                        return;
                }
                php_zval_filter_recursive(filtered, filter, filter_flags, options, charset, copy TSRMLS_CC);
@@ -568,7 +573,11 @@ static void php_filter_call(zval **filtered, long filter, zval **filter_args, co
                        SEPARATE_ZVAL(filtered);
                }
                zval_dtor(*filtered);
-               ZVAL_FALSE(*filtered);
+               if (filter_flags & FILTER_NULL_ON_FAILURE) {
+                       ZVAL_NULL(*filtered);
+               } else {
+                       ZVAL_FALSE(*filtered);
+               }
                return;
        }
 
@@ -650,13 +659,27 @@ PHP_FUNCTION(filter_input)
        int var_len;
 
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ls|lZ", &fetch_from, &var, &var_len, &filter, &filter_args) == FAILURE) {
-               RETURN_FALSE;
+               return;
        }
 
        input = php_filter_get_storage(fetch_from TSRMLS_CC);
 
        if (!input || !HASH_OF(input) || zend_hash_find(HASH_OF(input), var, var_len + 1, (void **)&tmp) != SUCCESS) {
-               RETURN_FALSE;
+               long filter_flags = 0;
+               zval **option;
+               if (filter_args) {
+                       if (Z_TYPE_PP(filter_args) == IS_LONG) {
+                               filter_flags = Z_LVAL_PP(filter_args);
+                       } else if (Z_TYPE_PP(filter_args) == IS_ARRAY && zend_hash_find(HASH_OF(*filter_args), "flags", sizeof("flags"), (void **)&option) == SUCCESS) {
+                               convert_to_long(*option);
+                               filter_flags = Z_LVAL_PP(option);
+                       }
+               }
+               if (filter_flags & FILTER_NULL_ON_FAILURE) {
+                       RETURN_FALSE;
+               } else {
+                       RETURN_NULL();
+               }
        }
 
        *return_value = **tmp;
@@ -675,7 +698,7 @@ PHP_FUNCTION(filter_var)
        zval **filter_args = NULL, *data;
 
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z/|lZ", &data, &filter, &filter_args) == FAILURE) {
-               RETURN_FALSE;
+               return;
        }
 
        *return_value = *data;
@@ -694,13 +717,27 @@ PHP_FUNCTION(filter_input_array)
        zval   *array_input = NULL, **op = NULL;
 
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|Z",  &fetch_from, &op) == FAILURE) {
-               RETURN_FALSE;
+               return;
        }
 
        array_input = php_filter_get_storage(fetch_from TSRMLS_CC);
 
        if (!array_input || !HASH_OF(array_input)) {
-               RETURN_FALSE;
+               long filter_flags = 0;
+               zval **option;
+               if (op) {
+                       if (Z_TYPE_PP(op) == IS_LONG) {
+                               filter_flags = Z_LVAL_PP(op);
+                       } else if (Z_TYPE_PP(op) == IS_ARRAY && zend_hash_find(HASH_OF(*op), "flags", sizeof("flags"), (void **)&option) == SUCCESS) {
+                               convert_to_long(*option);
+                               filter_flags = Z_LVAL_PP(option);
+                       }
+               }
+               if (filter_flags & FILTER_NULL_ON_FAILURE) {
+                       RETURN_FALSE;
+               } else {
+                       RETURN_NULL();
+               }
        }
 
        php_filter_array_handler(array_input, op, return_value TSRMLS_CC);
@@ -715,7 +752,7 @@ PHP_FUNCTION(filter_var_array)
        zval *array_input = NULL, **op = NULL;
 
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|Z",  &array_input, &op) == FAILURE) {
-               RETURN_FALSE;
+               return;
        }
 
        php_filter_array_handler(array_input, op, return_value TSRMLS_CC);
index 6adfe76615ae2e0f2d158b2bdf155a5033014da4..d782c2dfbf3a994db3409884d8cc18dd352c65d2 100644 (file)
@@ -27,6 +27,7 @@
 #define FILTER_REQUIRE_SCALAR                  0x2000000
 
 #define FILTER_FORCE_ARRAY                     0x4000000
+#define FILTER_NULL_ON_FAILURE                 0x8000000
 
 #define FILTER_FLAG_ALLOW_OCTAL             0x0001
 #define FILTER_FLAG_ALLOW_HEX               0x0002
index 2489a2fe88167020f5e026901ba93a8ba51d71ac..3833861a94009e4ec3811e5a9347cbbdd3bd95e6 100644 (file)
 #define FORMAT_IPV4    4
 #define FORMAT_IPV6    6
 
+#define RETURN_VALIDATION_FAILED       \
+       zval_dtor(value);       \
+       if (flags & FILTER_NULL_ON_FAILURE) {   \
+               ZVAL_NULL(value);       \
+       } else {        \
+               ZVAL_FALSE(value);      \
+       }       \
+       return; \
+
 static int php_filter_parse_int(const char *str, unsigned int str_len, long *ret TSRMLS_DC) { /* {{{ */
        long ctx_value = 0;
        long sign = 1;
@@ -176,9 +185,7 @@ void php_filter_int(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
        len = Z_STRLEN_P(value);
 
        if (len == 0) {
-               zval_dtor(value);
-               ZVAL_NULL(value);
-               return;
+               RETURN_VALIDATION_FAILED
        }
 
        if (option_flags & FILTER_FLAG_ALLOW_OCTAL) {
@@ -216,8 +223,7 @@ void php_filter_int(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
        }
 
        if (error > 0 || (min_range_set && (ctx_value < min_range)) || (max_range_set && (ctx_value > max_range))) {
-               zval_dtor(value);
-               ZVAL_NULL(value);
+               RETURN_VALIDATION_FAILED
        } else {
                zval_dtor(value);
                Z_TYPE_P(value) = IS_LONG;
@@ -236,9 +242,7 @@ void php_filter_boolean(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
        if (len>0) {
                PHP_FILTER_TRIM_DEFAULT(str, len, end);
        } else {
-               zval_dtor(value);
-               ZVAL_NULL(value);
-               return;
+               RETURN_VALIDATION_FAILED
        }
 
        /* returns true for "1", "true", "on" and "yes"
@@ -251,9 +255,15 @@ void php_filter_boolean(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
        {
                zval_dtor(value);
                ZVAL_BOOL(value, 1);
-       } else {
+       } else if ((strncasecmp(str, "false", sizeof("false")) == 0) ||
+               (strncasecmp(str, "no", sizeof("no")) == 0) ||
+               (strncasecmp(str, "off", sizeof("off")) == 0) ||
+               (strncmp(str, "0", sizeof("0")) == 0))
+       {
                zval_dtor(value);
                ZVAL_BOOL(value, 0);
+       } else {
+               RETURN_VALIDATION_FAILED
        }
 }
 /* }}} */
@@ -285,9 +295,7 @@ void php_filter_float(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
        len = Z_STRLEN_P(value);
 
        if (len < 1) {
-               zval_dtor(value);
-               ZVAL_NULL(value);
-               return;
+               RETURN_VALIDATION_FAILED
        }
 
        str = Z_STRVAL_P(value);
@@ -424,8 +432,7 @@ stateT:
        return;
 
 stateError:
-       zval_dtor(value);
-       ZVAL_NULL(value);
+       RETURN_VALIDATION_FAILED
 }
 /* }}} */
 
@@ -450,22 +457,18 @@ void php_filter_validate_regexp(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
 
        if (!regexp_set) {
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "'regexp' option missing");
-               zval_dtor(value);
-               ZVAL_NULL(value);
-               return;
+               RETURN_VALIDATION_FAILED
        }
 
        re = pcre_get_compiled_regex(regexp, &pcre_extra, &preg_options TSRMLS_CC);
        if (!re) {
-               zval_dtor(value);
-               ZVAL_NULL(value);
+               RETURN_VALIDATION_FAILED
        }
        matches = pcre_exec(re, NULL, Z_STRVAL_P(value), Z_STRLEN_P(value), 0, 0, ovector, 3);
 
        /* 0 means that the vector is too small to hold all the captured substring offsets */
        if (matches < 0) {
-               zval_dtor(value);
-               ZVAL_NULL(value);
+               RETURN_VALIDATION_FAILED
        }
 }
 /* }}} */
@@ -478,26 +481,17 @@ void php_filter_validate_url(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
        url = php_url_parse_ex(Z_STRVAL_P(value), Z_STRLEN_P(value));
 
        if (url == NULL) {
-               zval_dtor(value);
-               ZVAL_NULL(value);
-               return;
+               RETURN_VALIDATION_FAILED
        }
 
-       if ((flags & FILTER_FLAG_SCHEME_REQUIRED) && url->scheme == NULL) {
-               zval_dtor(value);
-               ZVAL_NULL(value);
-       }
-       if ((flags & FILTER_FLAG_HOST_REQUIRED) && url->host == NULL) {
-               zval_dtor(value);
-               ZVAL_NULL(value);
-       }
-       if ((flags & FILTER_FLAG_PATH_REQUIRED) && url->path == NULL) {
-               zval_dtor(value);
-               ZVAL_NULL(value);
-       }
-       if ((flags & FILTER_FLAG_QUERY_REQUIRED) && url->query == NULL) {
-               zval_dtor(value);
-               ZVAL_NULL(value);
+       if (
+               ((flags & FILTER_FLAG_SCHEME_REQUIRED) && url->scheme == NULL) ||
+               ((flags & FILTER_FLAG_HOST_REQUIRED) && url->host == NULL) ||
+               ((flags & FILTER_FLAG_PATH_REQUIRED) && url->path == NULL) ||
+               ((flags & FILTER_FLAG_QUERY_REQUIRED) && url->query == NULL)
+       ) {
+               php_url_free(url);
+               RETURN_VALIDATION_FAILED
        }
        php_url_free(url);
 }
@@ -517,15 +511,13 @@ void php_filter_validate_email(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
 
        re = pcre_get_compiled_regex((char *)regexp, &pcre_extra, &preg_options TSRMLS_CC);
        if (!re) {
-               zval_dtor(value);
-               ZVAL_NULL(value);
+               RETURN_VALIDATION_FAILED
        }
        matches = pcre_exec(re, NULL, Z_STRVAL_P(value), Z_STRLEN_P(value), 0, 0, ovector, 3);
 
        /* 0 means that the vector is too small to hold all the captured substring offsets */
        if (matches < 0) {
-               zval_dtor(value);
-               ZVAL_NULL(value);
+               RETURN_VALIDATION_FAILED
        }
 
 }
@@ -766,29 +758,21 @@ void php_filter_validate_ip(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
        } else if (strchr(str, '.')) {
                mode = FORMAT_IPV4;
        } else {
-               zval_dtor(value);
-               ZVAL_NULL(value);
-               return;
+               RETURN_VALIDATION_FAILED
        }
 
        if (flags & (FILTER_FLAG_IPV4 || FILTER_FLAG_IPV6)) {
                /* Both formats are cool */
        } else if ((flags & FILTER_FLAG_IPV4) && mode == FORMAT_IPV6) {
-               zval_dtor(value);
-               ZVAL_NULL(value);
-               return;
+               RETURN_VALIDATION_FAILED
        } else if ((flags & FILTER_FLAG_IPV6) && mode == FORMAT_IPV4) {
-               zval_dtor(value);
-               ZVAL_NULL(value);
-               return;
+               RETURN_VALIDATION_FAILED
        }
 
        switch (mode) {
                case FORMAT_IPV4:
                        if (!_php_filter_validate_ipv4(str, ip TSRMLS_CC)) {
-                               zval_dtor(value);
-                               ZVAL_NULL(value);
-                               return;
+                               RETURN_VALIDATION_FAILED
                        }
 
                        /* Check flags */
@@ -798,9 +782,7 @@ void php_filter_validate_ip(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
                                        (ip[0] == 172 && (ip[1] >= 16 && ip[1] <= 31)) ||
                                        (ip[0] == 192 && ip[1] == 168)
                                ) {
-                                       zval_dtor(value);
-                                       ZVAL_NULL(value);
-                                       return;
+                                       RETURN_VALIDATION_FAILED
                                }
                        }
 
@@ -811,9 +793,7 @@ void php_filter_validate_ip(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
                                        (ip[0] == 192 && ip[1] == 0 && ip[2] == 2) ||
                                        (ip[0] >= 224 && ip[0] <= 255)
                                ) {
-                                       zval_dtor(value);
-                                       ZVAL_NULL(value);
-                                       return;
+                                       RETURN_VALIDATION_FAILED
                                }
                        }
                        break;
@@ -823,9 +803,7 @@ void php_filter_validate_ip(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
                                int res = 0;
                                res = _php_filter_validate_ipv6_(str TSRMLS_CC);
                                if (res < 1) {
-                                       zval_dtor(value);
-                                       ZVAL_NULL(value);
-                                       return;
+                                       RETURN_VALIDATION_FAILED
                                }
                        }
                        break;
index 0de3467cec5688fe376a22c141ca6ffefb0203d5..d0a53c3a8272eb1290847eda0fe25a3ca372b762 100644 (file)
@@ -21,13 +21,13 @@ array(7) {
   [1]=>
   int(1)
   [2]=>
-  NULL
+  bool(false)
   [3]=>
   int(-23234)
   [4]=>
-  NULL
+  bool(false)
   [5]=>
-  NULL
+  bool(false)
   [6]=>
   array(0) {
   }
@@ -38,20 +38,20 @@ array(7) {
   [1]=>
   float(1.7)
   [2]=>
-  NULL
+  bool(false)
   [3]=>
   float(-23234.123)
   [4]=>
-  NULL
+  bool(false)
   [5]=>
-  NULL
+  bool(false)
   [6]=>
   array(0) {
   }
 }
 
-Warning: filter_var() expects parameter 2 to be long, array given in %s on line %d
-bool(false)
+Warning: filter_var() expects parameter 2 to be long, array given in /home4/php_dev/php52/ext/filter/tests/010.php on line 5
+NULL
 string(1) "1"
 string(1) "1"
 string(1) "1"
index 103fd3c8f95fa35d25f9504d8048c5b055050826..ef0525489fa03e5031616acaa03758898d1247fe 100644 (file)
@@ -10,7 +10,7 @@ var_dump(filter_input(INPUT_COOKIE, ""));
 echo "Done\n";
 ?>
 --EXPECT--     
-bool(false)
-bool(false)
-bool(false)
+NULL
+NULL
+NULL
 Done
index d88145a6e746bfc7fb0d5781f52401e95b0701bd..55c71e3535f13a6323733d7b38b414f949a36b6e 100644 (file)
@@ -49,24 +49,24 @@ int(255)
 int(7)
 int(16711680)
 int(438)
-NULL
+bool(false)
 int(0)
 int(0)
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
 int(6)
-NULL
-NULL
+bool(false)
+bool(false)
 int(-1)
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
 Done
index f12eac0ed4eea3ac862e619f20d0bd0ac23b0cf9..77e4d255759b35096059a89b8f3b4773a880a9c1 100644 (file)
@@ -32,9 +32,9 @@ var_dump(filter_var("111111", FILTER_VALIDATE_BOOLEAN));
 
 echo "Done\n";
 ?>
---EXPECTF--    
+--EXPECT--     
+bool(false)
 bool(false)
-NULL
 bool(false)
 array(5) {
   [0]=>
@@ -48,7 +48,7 @@ array(5) {
   [4]=>
   array(2) {
     [0]=>
-    NULL
+    bool(false)
     [1]=>
     bool(false)
   }
@@ -61,7 +61,7 @@ bool(true)
 bool(false)
 bool(true)
 bool(false)
-NULL
+bool(false)
 bool(false)
 bool(false)
 bool(false)
index 67c506f3d0386275c92e45a84f69ed14d10a0ae2..edde095e75aab71764d1305e7195796fb16b1149 100644 (file)
@@ -40,7 +40,7 @@ var_dump(filter_var("http://www.example.com/index.php?a=b&c=d", FILTER_VALIDATE_
 
 echo "Done\n";
 ?>
---EXPECTF--    
+--EXPECT--     
 string(29) "http://example.com/index.html"
 string(32) "http://www.example.com/index.php"
 string(31) "http://www.example/img/test.png"
@@ -52,20 +52,20 @@ string(18) "file:///tmp/test.c"
 string(26) "ftp://ftp.example.com/tmp/"
 string(11) "/tmp/test.c"
 string(1) "/"
-NULL
+bool(false)
 string(6) "http:/"
 string(5) "http:"
 string(4) "http"
 string(0) ""
 string(2) "-1"
 bool(false)
-NULL
+bool(false)
 string(10) "http://qwe"
-NULL
-NULL
+bool(false)
+bool(false)
 string(22) "http://www.example.com"
-NULL
+bool(false)
 string(42) "http://www.example.com/path/at/the/server/"
-NULL
+bool(false)
 string(40) "http://www.example.com/index.php?a=b&c=d"
 Done
index d1c959c119b0b642c8670ca58d7d1cc7f4523529..67921f0188bf01e11f0a27ad98a7419bc90d657a 100644 (file)
@@ -22,11 +22,11 @@ echo "Done\n";
 --EXPECT--     
 string(5) "a@b.c"
 string(17) "abuse@example.com"
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
 string(57) "QWERTYUIOPASDFGHJKLZXCVBNM@QWERTYUIOPASDFGHJKLZXCVBNM.NET"
 Done
index 2b2d9de889fa7f81bf44fb96f169c676651a4afa..661dfe40ffdba555606d6d147ecb917f04207946 100644 (file)
@@ -14,11 +14,11 @@ echo "Done\n";
 ?>
 --EXPECTF--    
 string(4) "data"
-NULL
+bool(false)
 string(4) "data"
-NULL
-NULL
+bool(false)
+bool(false)
 
 Warning: filter_var(): 'regexp' option missing in %s on line %d
-NULL
+bool(false)
 Done
index 5b0b16da28818770d9400b837b5031fe86fe8e76..7ea17b329c2b0b1d42054b089b2f6e8b0f317246 100644 (file)
@@ -27,24 +27,24 @@ echo "Done\n";
 ?>
 --EXPECT--     
 string(11) "192.168.0.1"
-NULL
+bool(false)
 string(3) "::1"
 string(7) "fe00::0"
-NULL
-NULL
+bool(false)
+bool(false)
 string(9) "127.0.0.1"
-NULL
+bool(false)
 string(12) "192.0.34.166"
 string(9) "127.0.0.1"
 string(9) "192.0.0.1"
 string(12) "192.0.34.166"
-NULL
+bool(false)
 string(15) "255.255.255.255"
-NULL
-NULL
-NULL
-NULL
-NULL
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
 string(3) "::1"
 string(9) "127.0.0.1"
 Done
index e8c85c8243f7175d3ee8ded06695d7fa18977ee1..5a20ff82112e9c5fb82b6a6f05007d7fb898f0f4 100644 (file)
@@ -11,10 +11,10 @@ var_dump(filter_var("1.1.1.1", FILTER_VALIDATE_IP));
 
 echo "Done\n";
 ?>
---EXPECTF--    
-NULL
-NULL
-NULL
-NULL
+--EXPECT--     
+bool(false)
+bool(false)
+bool(false)
+bool(false)
 string(7) "1.1.1.1"
 Done
index 257d1d6cbdd59c14ec5b7406e82b9ba3ea63e211..97b62b9e26500ffd5f24618bcd528b0287d93a3d 100644 (file)
@@ -23,7 +23,7 @@ $ipv6_test = array(
 );
 foreach ($ipv6_test as $ip => $exp) {
        $out = filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6);
-       $out = (int) ($out === null ? 0 : 1);
+       $out = (int) ($out === false ? 0 : 1);
        if ($exp != $out) {
                echo "$ip failed\n";
        }
index 81dcc1c0e94dfe7bdbd0ddc4b5723a25bf1109a5..74883b8b26c6b0208a73bd175115f314ce908d7c 100644 (file)
@@ -45,10 +45,10 @@ float(7000)
 float(0.007)
 
 custom decimal:
-NULL
+bool(false)
 float(1.234)
 float(1.234)
 
 Warning: filter_var(): decimal separator must be one char in %s on line %d
-NULL
-NULL
+bool(false)
+bool(false)
index a041786639b6cb673f4fe19fe6cf9a17c800e0ef..f96596d7c33aa434ef1a1104c9100e285c00aa87 100644 (file)
@@ -16,12 +16,12 @@ $booleans = array(
 'faLsE' => false,
 'oFf' => false,
 
-'' => null
+'' => false
 );
 
 foreach($booleans as $val=>$exp) {
     $res =filter_var($val, FILTER_VALIDATE_BOOLEAN);
-    if ($res !== $exp) {
+           if ($res !== $exp) {
         echo "$val failed,'$exp' expect, '$res' received.\n";
     }
 }
index ae2ac45f8566551fd96d0504f15db1b6676e5079..ab1a0937edcc11dfbf5c9b708ff31844f57618de 100644 (file)
@@ -8,6 +8,6 @@ var_dump(filter_var($var, FILTER_VALIDATE_INT));
 $var="3".chr(0)."foo";
 var_dump(filter_var($var, FILTER_VALIDATE_FLOAT));
 ?>
---EXPECTF--    
-NULL
-NULL
+--EXPECT--     
+bool(false)
+bool(false)
index 9ae9ab17bf3f331a647f2ced21507994c82479f7..14e8545c9b7f2a81ef72276d1e8a4263dafccf22 100644 (file)
@@ -46,7 +46,7 @@ int(123)
 int(-123)
 int(0)
 int(123)
-NULL
+bool(false)
 
 float(-0.123)
 float(0)
@@ -54,7 +54,7 @@ float(1.23)
 float(-1.23)
 float(0)
 float(1.23)
-NULL
+bool(false)
 
 bool(true)
 bool(false)
@@ -67,5 +67,5 @@ bool(false)
 bool(true)
 bool(false)
 bool(true)
-NULL
-NULL
+bool(false)
+bool(false)