Annotation of embedaddon/php/ext/filter/docs/filter.txt, revision 1.1

1.1     ! misho       1: Input Filter Extension
        !             2: ~~~~~~~~~~~~~~~~~~~~~~
        !             3: 
        !             4: Introduction
        !             5: ============
        !             6: We all know that you should always check input variables, but PHP does not
        !             7: offer really good functionality for doing this in a safe way. The Input Filter
        !             8: extension is meant to address this issue by implementing a set of filters and
        !             9: mechanisms that users can use to safely access their input data. 
        !            10: 
        !            11: 
        !            12: Change Log
        !            13: ==========
        !            14: 2005-10-27
        !            15:     * Updated filter_data prototype
        !            16:     * Added filter constants
        !            17:     * Fixed minor problems
        !            18:     * Changes by David Tulloh
        !            19: 
        !            20: 2005-10-05
        !            21:     * Changed "input_filter.paranoid_admin_default_filter" to
        !            22:       "filter.default".
        !            23:     * Updated API prototypes to reflect implementation.
        !            24:     * Added 'on' and 'off' to the boolean filter.
        !            25:     * Removed min_range and max_range flags from the float filter.
        !            26:     * Added validate_url, validate_email and validate_ip filters.
        !            27:     * Updated allows flags for all filters.
        !            28: 
        !            29: 2005-08-15
        !            30:     * Unmade *source* a bitmask, it doesn't make sense to do.
        !            31:     * Changed return value of filters which got invalid data from 'false' to
        !            32:       'null.
        !            33:     * Failed filters do not throw an E_NOTICE any longer.
        !            34:     * Added a magic_quotes sanitizing filter.
        !            35: 
        !            36: 
        !            37: General Considerations
        !            38: ======================
        !            39: * If the filter's expected input data mask does not match the provided data
        !            40:   for logical filters the filter function returns "false". If the data was
        !            41:   not found, "null" is returned.
        !            42: * Character filters always return a string.
        !            43: * With the input filter extension enabled, and the
        !            44:   input_filter.paranoid_admin_default_filter is set to something != 'raw',
        !            45:   then all entries in the affected super globals will be passed through the
        !            46:   configured filter. The 'callback' filter can not be used here, as that
        !            47:   requieres a PHP script to be running already.
        !            48: * As the input filter acts on input data before the magic quotes function
        !            49:   mangles data, all access through the filter() function will not have any
        !            50:   quotes or slashes added - it will be the pure data as send by the browser.
        !            51: * All flags mentioned here should be prepended with `FILTER_FLAG_` when used
        !            52:   with PHP.
        !            53: 
        !            54:   
        !            55: API
        !            56: ===
        !            57: mixed *input_get* (int *source*, string *name*, [, int *filter* [, mixed *filter_options*, [ string *characterset* ] ]);
        !            58:     Returns the filtered variable *$name* from source *$source*. It uses the
        !            59:     filter as specified in *$filter* with a constant, and additional options
        !            60:     to the filter through *$filter_options*.
        !            61: 
        !            62: mixed *input_get_args* (array *definitions*, int *source*, [, array *data*]);
        !            63:     Returns an array with all filtered variables defined in 'definition'.
        !            64:     The keys are used as the name of the argument. The value can be either
        !            65:     an integer (flags) or an array of options. This array can contain 
        !            66:     the 'filter' type, the 'flags', the 'otptions' or the 'charset'
        !            67: 
        !            68: bool *input_has_variable (int *source*, string *name*);
        !            69:     Returns *true* if the variable with the name *name* exists in *source*, or
        !            70:     *false* otherwise.
        !            71: 
        !            72: array *input_filters_list* ();
        !            73:     Returns a list with all supported filter names.
        !            74: 
        !            75: mixed *filter_data* (mixed *variable*, int *filter* [, mixed *filter_options*, [ string *characterset* ] ]);
        !            76:     Filters the user supplied variable *$variable* in the same manner as
        !            77:     *input_get*.
        !            78: 
        !            79: *$source*:
        !            80: 
        !            81: * INPUT_POST     0
        !            82: * INPUT_GET      1
        !            83: * INPUT_COOKIE   2
        !            84: * INPUT_ENV      4
        !            85: * INPUT_SERVER   5 (not implemented yet)
        !            86: * INPUT_SESSION  6 (not implemented yet)
        !            87: 
        !            88: 
        !            89: General flags
        !            90: =============
        !            91: 
        !            92: * FILTER_FLAG_SCALAR
        !            93: * FILTER_FLAG_ARRAY
        !            94: 
        !            95: These two constants define whether to allow arrays in the source values. The
        !            96: default value is SCALAR for input_get_args and ARRAY for the other functions
        !            97: (< 0.9.5). These constants also insure that the function returns the correct
        !            98: type, if you ask for an array, you will get an array even if the source is
        !            99: only one value. However, if you ask for a scalar and the source is an array,
        !           100: the result will be FALSE (invalid).
        !           101: 
        !           102: 
        !           103: Logical Filters
        !           104: ===============
        !           105: 
        !           106: These filters check whether passed data was valid, and do never mangle input
        !           107: variables, but ofcourse they can deny the whole input variable getting to the
        !           108: application by returning false.
        !           109: 
        !           110: The constants should be prepended by `FILTER_VALIDATE_` when used with php.
        !           111: 
        !           112: ================ ========== =========== ==================================================
        !           113: Name             Constant   Return Type Description      
        !           114: ================ ========== =========== ==================================================
        !           115: int              INT        integer     Returns the input variable as an integer
        !           116: 
        !           117:                                         $filter_options - an array with the optional
        !           118:                                         elements:
        !           119: 
        !           120:                                         * min_range: Minimal number that is allowed
        !           121:                                           (inclusive)
        !           122:                                         * max_range: Maximum number that is allowed
        !           123:                                           (inclusive)
        !           124:                                         * flags: A bitmask supporting the following flags:
        !           125:                           
        !           126:                                           - ALLOW_OCTAL: allow octal numbers with the format
        !           127:                                             0nn as input too.
        !           128:                                           - ALLOW_HEX: allow hexadecimal numbers with the
        !           129:                                             format 0xnn or 0Xnn too.
        !           130: 
        !           131: boolean          BOOLEAN    boolean     Returns *true* for '1', 'on' and 'true' and *false*
        !           132:                                         for '0', 'off' and 'false'
        !           133: 
        !           134: float            FLOAT      float       Returns the input variable as a floating point value
        !           135: 
        !           136: validate_regexp  REGEXP     string      Matches the input value as a string against the
        !           137:                                         regular expression. If there is a match then the
        !           138:                                         string is returned, otherwise the filter returns
        !           139:                                         *null*.
        !           140:                                         Remarks: Only available if pcre has been compiled
        !           141:                                         into PHP.
        !           142: 
        !           143: validate_url     URL        string      Validates an URL's format.
        !           144: 
        !           145:                                         $filter_options - an bitmask that supports the
        !           146:                                         following flags:
        !           147:            
        !           148:                                         * SCHEME_REQUIRED: The 'schema' part of the URL
        !           149:                                           needs to in the passed URL.
        !           150:                                         * HOST_REQUIRED: The 'host' part of the URL
        !           151:                                           needs to in the passed URL.
        !           152:                                         * PATH_REQUIRED: The 'path' part of the URL
        !           153:                                           needs to in the passed URL.
        !           154:                                         * QUERY_REQUIRED: The 'query' part of the URL
        !           155:                                           needs to in the passed URL.
        !           156: 
        !           157: validate_email   EMAIL      string      Validates the passed string against a reasonably
        !           158:                                         good regular expression for validating an email
        !           159:                                         address.
        !           160: 
        !           161: validate_ip      IP         string      Validates a string representing an IP address.
        !           162: 
        !           163:                                         $filter_options - an bitmask that supports the
        !           164:                                         following flags:
        !           165: 
        !           166:                                         * IPV4: Allows IPv4 addresses.
        !           167:                                         * IPV6: Allows IPv6 addresses.
        !           168:                                         * NO_RES_RANGE: Disallows addresses in reversed
        !           169:                                           ranges (IPv4 only)
        !           170:                                         * NO_PRIV_RANGE: Disallows addresses in private
        !           171:                                           ranges (IPv4 only)
        !           172: ================ ========== =========== ==================================================
        !           173: 
        !           174: 
        !           175: Sanitizing Filters
        !           176: ==================
        !           177: 
        !           178: These filters remove data, or change data depending on the filter, and the
        !           179: set rules for this specific filter. Instead of taking an *options* array, they
        !           180: use this parameter for flags for the specific filter.
        !           181: 
        !           182: The constants should be prepended by `FILTER_SANITIZE_` when used with php.
        !           183:                          
        !           184: ============= ================ =========== =====================================================
        !           185: Name          Constant         Return Type Description      
        !           186: ============= ================ =========== =====================================================
        !           187: string        STRING           string      Returns the input variable as a string after it has
        !           188:                                            been stripped of XML/HTML tags and other evil things
        !           189:                                            that can cause XSS problems.
        !           190: 
        !           191:                                            $filter_options - an bitmask that supports the
        !           192:                                            following flags:
        !           193:                  
        !           194:                                            * NO_ENCODE_QUOTES: Prevents single and double
        !           195:                                              quotes from being encoded as numerical HTML
        !           196:                                              entities.
        !           197:                                            * STRIP_LOW: excludes all characters < 0x20 from the
        !           198:                                              allowed character list
        !           199:                                            * STRIP_HIGH: excludes all characters >= 0x80 from
        !           200:                                              the allowed character list
        !           201:                                            * ENCODE_LOW: allows characters < 0x20 but encodes
        !           202:                                              them as numerical HTML entities
        !           203:                                            * ENCODE_HIGH: allows characters >= 0x80 but encodes
        !           204:                                              them as numerical HTML entities
        !           205:                                            * ENCODE_AMP: encodes & as &amp;
        !           206: 
        !           207:                                            The flags STRIP_LOW and ENCODE_LOW are mutual
        !           208:                                            exclusive, and so are STRIP_HIGH and ENCODE_HIGH. In
        !           209:                                            the case they clash, the characters will be
        !           210:                                            stripped.
        !           211: 
        !           212: stripped      STRIPPED         string      Alias for 'string'.
        !           213: 
        !           214: encoded       ENCODED          string      Encodes all characters outside the range
        !           215:                                            "a-zA-Z0-9-._" as URL encoded values.
        !           216: 
        !           217:                                            $filter_options - an bitmask that supports the
        !           218:                                            following flags:
        !           219: 
        !           220:                                            * STRIP_LOW: excludes all characters < 0x20 from the
        !           221:                                              allowed character list
        !           222:                                            * STRIP_HIGH: excludes all characters >= 0x80 from
        !           223:                                              the allowed character list
        !           224:                                            * ENCODE_LOW: allows characters < 0x20 but encodes
        !           225:                                              them as numerical HTML entities
        !           226:                                            * ENCODE_HIGH: allows characters >= 0x80 but encodes
        !           227:                                              them as numerical HTML entities
        !           228: 
        !           229: special_chars SPECIAL_CHARS    string      Encodes the 'special' characters ' " < > &, \0 and
        !           230:                                            everything below 0x20 as numerical HTML entities.
        !           231:                  
        !           232:                                            $filter_options - an bitmask that supports the
        !           233:                                            following flags:
        !           234:                  
        !           235:                                            * STRIP_LOW: excludes all characters < 0x20 from the
        !           236:                                              allowed character list. If this is not set, then
        !           237:                                              those characters are encoded as numerical HTML
        !           238:                                              entities
        !           239:                                            * STRIP_HIGH: excludes all characters >= 0x80 from
        !           240:                                              the allowed character list
        !           241:                                            * ENCODE_HIGH: allows characters >= 0x80 but encodes
        !           242:                                              them as numerical HTML entities
        !           243: 
        !           244: unsafe_raw    UNSAFE_RAW       string      Returns the input variable as a string without
        !           245:                                            XML/HTML being stripped from the input value.
        !           246:                  
        !           247:                                            $filter_options - an bitmask that supports the
        !           248:                                            following flags:
        !           249:                  
        !           250:                                            * STRIP_LOW: excludes all characters < 0x20 from the
        !           251:                                              allowed character list
        !           252:                                            * STRIP_HIGH: excludes all characters >= 0x80 from
        !           253:                                              the allowed character list
        !           254:                                            * ENCODE_LOW: allows characters < 0x20 but encodes
        !           255:                                              them as numerical HTML entities
        !           256:                                            * ENCODE_HIGH: allows characters >= 0x80 but encodes
        !           257:                                              them as numerical HTML entities
        !           258:                                            * ENCODE_AMP: encodes & as &amp;
        !           259:                  
        !           260:                                            The flags STRIP_LOW and ENCODE_LOW are mutual
        !           261:                                            exclusive, and so are STRIP_HIGH and ENCODE_HIGH. In
        !           262:                                            the case they clash, the characters will be
        !           263:                                            stripped.
        !           264: 
        !           265: email         EMAIL            string      Removes all characters that can not be part of a
        !           266:                                            correctly formed e-mail address (exception are
        !           267:                                            comments in the email address) (a-z A-Z 0-9 " ! # $
        !           268:                                            % & ' * + - / = ? ^ _ ` { | } ~ @ . [ ]). This
        !           269:                                            filter does `not` validate if the e-mail address has
        !           270:                                            the correct format, use the validate_email filter
        !           271:                                            for that.
        !           272:                  
        !           273: url           URL              string      Removes all characters that can not be part of a
        !           274:                                            correctly formed URI. (a-z A-Z 0-9 $ - _ . + ! * ' (
        !           275:                                            ) , { } | \ ^ ~ [ ] ` < > # % " ; / ? : @ & =) This
        !           276:                                            filter does `not` validate if a URI has the correct
        !           277:                                            format, use the validate_url filter for that.
        !           278:                  
        !           279: number_int    NUMBER_INT       int         Removes all characters that are [^0-9+-].
        !           280: 
        !           281: number_float  NUMBER_FLOAT     float       Removes all characters that are [^0-9+-].
        !           282: 
        !           283:                                            $filter_options - an bitmask that supports the
        !           284:                                            following flags:
        !           285:                  
        !           286:                                            * ALLOW_FRACTION: adds "." to the characters that
        !           287:                                              are not stripped.
        !           288:                                            * ALLOW_THOUSAND: adds "," to the characters that
        !           289:                                              are not stripped.
        !           290:                                            * ALLOW_SCIENTIFIC: adds "eE" to the characters that
        !           291:                                              are not stripped.
        !           292: 
        !           293: magic_quotes  MAGIC_QUOTES     string      BC filter for people who like magic quotes.
        !           294: ============= ================ =========== =====================================================
        !           295: 
        !           296: 
        !           297: Callback Filter
        !           298: ===============
        !           299: 
        !           300: This filter will callback to the specified callback function as specified with
        !           301: the *filter_options* parameter. All variants of callback functions are
        !           302: supported:
        !           303: 
        !           304: * function with *'functionname'*
        !           305: * static method with *array('classname', 'methodname')*
        !           306: * dynamic method with *array(&$this, 'methodname')*
        !           307: 
        !           308: The constants should be prepended by `FILTER_` when used with php.
        !           309: 
        !           310: ============= =========== =========== =====================================================
        !           311: Name          Constant    Return Type Description      
        !           312: ============= =========== =========== =====================================================
        !           313: callback      CALLBACK    mixed       Calls the callback function/method with the input
        !           314:                                       variable's value by reference which can do filtering
        !           315:                                       and modifying of the input value. If the callback
        !           316:                                       function returns "false" then the input value is
        !           317:                                       supposed to be incorrect and the returned value will
        !           318:                                       be 'false' (and an E_NOTICE will be raised).
        !           319: ============= =========== =========== =====================================================
        !           320: 
        !           321: The callback function's prototype is:
        !           322: 
        !           323: boolean callback(&$value, $characterset);
        !           324:     With *$value* being a reference to the input variable and *$characterset*
        !           325:     containing the same value as this parameter's value in the call to
        !           326:     *input_get()* or *input_get_array()*. If the *$characterset* parameter was
        !           327:     not passed, it defaults to *'null'*.
        !           328: 
        !           329: Version: $Id: filter.txt 213641 2006-05-24 11:51:55Z pajoye $
        !           330: .. vim: et syn=rst tw=78
        !           331: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>