+++ /dev/null
-Input Filter Extension
-~~~~~~~~~~~~~~~~~~~~~~
-
-Introduction
-============
-We all know that you should always check input variables, but PHP does not
-offer really good functionality for doing this in a safe way. The Input Filter
-extension is meant to address this issue by implementing a set of filters and
-mechanisms that users can use to safely access their input data.
-
-
-Change Log
-==========
-2005-10-27
- * Updated filter_data prototype
- * Added filter constants
- * Fixed minor problems
- * Changes by David Tulloh
-
-2005-10-05
- * Changed "input_filter.paranoid_admin_default_filter" to
- "filter.default".
- * Updated API prototypes to reflect implementation.
- * Added 'on' and 'off' to the boolean filter.
- * Removed min_range and max_range flags from the float filter.
- * Added validate_url, validate_email and validate_ip filters.
- * Updated allows flags for all filters.
-
-2005-08-15
- * Unmade *source* a bitmask, it doesn't make sense to do.
- * Changed return value of filters which got invalid data from 'false' to
- 'null.
- * Failed filters do not throw an E_NOTICE any longer.
- * Added a magic_quotes sanitizing filter.
-
-
-General Considerations
-======================
-* If the filter's expected input data mask does not match the provided data
- for logical filters the filter function returns "false". If the data was
- not found, "null" is returned.
-* Character filters always return a string.
-* With the input filter extension enabled, and the
- input_filter.paranoid_admin_default_filter is set to something != 'raw',
- then all entries in the affected super globals will be passed through the
- configured filter. The 'callback' filter can not be used here, as that
- requieres a PHP script to be running already.
-* As the input filter acts on input data before the magic quotes function
- mangles data, all access through the filter() function will not have any
- quotes or slashes added - it will be the pure data as send by the browser.
-* All flags mentioned here should be prepended with `FILTER_FLAG_` when used
- with PHP.
-
-
-API
-===
-mixed *input_get* (int *source*, string *name*, [, int *filter* [, mixed *filter_options*, [ string *characterset* ] ]);
- Returns the filtered variable *$name* from source *$source*. It uses the
- filter as specified in *$filter* with a constant, and additional options
- to the filter through *$filter_options*.
-
-mixed *input_get_args* (array *definitions*, int *source*, [, array *data*]);
- Returns an array with all filtered variables defined in 'definition'.
- The keys are used as the name of the argument. The value can be either
- an integer (flags) or an array of options. This array can contain
- the 'filter' type, the 'flags', the 'otptions' or the 'charset'
-
-bool *input_has_variable (int *source*, string *name*);
- Returns *true* if the variable with the name *name* exists in *source*, or
- *false* otherwise.
-
-array *input_filters_list* ();
- Returns a list with all supported filter names.
-
-mixed *filter_data* (mixed *variable*, int *filter* [, mixed *filter_options*, [ string *characterset* ] ]);
- Filters the user supplied variable *$variable* in the same manner as
- *input_get*.
-
-*$source*:
-
-* INPUT_POST 0
-* INPUT_GET 1
-* INPUT_COOKIE 2
-* INPUT_ENV 4
-* INPUT_SERVER 5 (not implemented yet)
-* INPUT_SESSION 6 (not implemented yet)
-
-
-General flags
-=============
-
-* FILTER_FLAG_SCALAR
-* FILTER_FLAG_ARRAY
-
-These two constants define whether to allow arrays in the source values. The
-default value is SCALAR for input_get_args and ARRAY for the other functions
-(< 0.9.5). These constants also insure that the function returns the correct
-type, if you ask for an array, you will get an array even if the source is
-only one value. However, if you ask for a scalar and the source is an array,
-the result will be FALSE (invalid).
-
-
-Logical Filters
-===============
-
-These filters check whether passed data was valid, and do never mangle input
-variables, but ofcourse they can deny the whole input variable getting to the
-application by returning false.
-
-The constants should be prepended by `FILTER_VALIDATE_` when used with php.
-
-================ ========== =========== ==================================================
-Name Constant Return Type Description
-================ ========== =========== ==================================================
-int INT integer Returns the input variable as an integer
-
- $filter_options - an array with the optional
- elements:
-
- * min_range: Minimal number that is allowed
- (inclusive)
- * max_range: Maximum number that is allowed
- (inclusive)
- * flags: A bitmask supporting the following flags:
-
- - ALLOW_OCTAL: allow octal numbers with the format
- 0nn as input too.
- - ALLOW_HEX: allow hexadecimal numbers with the
- format 0xnn or 0Xnn too.
-
-boolean BOOLEAN boolean Returns *true* for '1', 'on' and 'true' and *false*
- for '0', 'off' and 'false'
-
-float FLOAT float Returns the input variable as a floating point value
-
-validate_regexp REGEXP string Matches the input value as a string against the
- regular expression. If there is a match then the
- string is returned, otherwise the filter returns
- *null*.
- Remarks: Only available if pcre has been compiled
- into PHP.
-
-validate_url URL string Validates an URL's format.
-
- $filter_options - an bitmask that supports the
- following flags:
-
- * SCHEME_REQUIRED: The 'schema' part of the URL
- needs to in the passed URL.
- * HOST_REQUIRED: The 'host' part of the URL
- needs to in the passed URL.
- * PATH_REQUIRED: The 'path' part of the URL
- needs to in the passed URL.
- * QUERY_REQUIRED: The 'query' part of the URL
- needs to in the passed URL.
-
-validate_email EMAIL string Validates the passed string against a reasonably
- good regular expression for validating an email
- address.
-
-validate_ip IP string Validates a string representing an IP address.
-
- $filter_options - an bitmask that supports the
- following flags:
-
- * IPV4: Allows IPv4 addresses.
- * IPV6: Allows IPv6 addresses.
- * NO_RES_RANGE: Disallows addresses in reversed
- ranges (IPv4 only)
- * NO_PRIV_RANGE: Disallows addresses in private
- ranges (IPv4 only)
-================ ========== =========== ==================================================
-
-
-Sanitizing Filters
-==================
-
-These filters remove data, or change data depending on the filter, and the
-set rules for this specific filter. Instead of taking an *options* array, they
-use this parameter for flags for the specific filter.
-
-The constants should be prepended by `FILTER_SANITIZE_` when used with php.
-
-============= ================ =========== =====================================================
-Name Constant Return Type Description
-============= ================ =========== =====================================================
-string STRING string Returns the input variable as a string after it has
- been stripped of XML/HTML tags and other evil things
- that can cause XSS problems.
-
- $filter_options - an bitmask that supports the
- following flags:
-
- * NO_ENCODE_QUOTES: Prevents single and double
- quotes from being encoded as numerical HTML
- entities.
- * STRIP_LOW: excludes all characters < 0x20 from the
- allowed character list
- * STRIP_HIGH: excludes all characters >= 0x80 from
- the allowed character list
- * ENCODE_LOW: allows characters < 0x20 but encodes
- them as numerical HTML entities
- * ENCODE_HIGH: allows characters >= 0x80 but encodes
- them as numerical HTML entities
- * ENCODE_AMP: encodes & as &
-
- The flags STRIP_LOW and ENCODE_LOW are mutual
- exclusive, and so are STRIP_HIGH and ENCODE_HIGH. In
- the case they clash, the characters will be
- stripped.
-
-stripped STRIPPED string Alias for 'string'.
-
-encoded ENCODED string Encodes all characters outside the range
- "a-zA-Z0-9-._" as URL encoded values.
-
- $filter_options - an bitmask that supports the
- following flags:
-
- * STRIP_LOW: excludes all characters < 0x20 from the
- allowed character list
- * STRIP_HIGH: excludes all characters >= 0x80 from
- the allowed character list
- * ENCODE_LOW: allows characters < 0x20 but encodes
- them as numerical HTML entities
- * ENCODE_HIGH: allows characters >= 0x80 but encodes
- them as numerical HTML entities
-
-special_chars SPECIAL_CHARS string Encodes the 'special' characters ' " < > &, \0 and
- everything below 0x20 as numerical HTML entities.
-
- $filter_options - an bitmask that supports the
- following flags:
-
- * STRIP_LOW: excludes all characters < 0x20 from the
- allowed character list. If this is not set, then
- those characters are encoded as numerical HTML
- entities
- * STRIP_HIGH: excludes all characters >= 0x80 from
- the allowed character list
- * ENCODE_HIGH: allows characters >= 0x80 but encodes
- them as numerical HTML entities
-
-unsafe_raw UNSAFE_RAW string Returns the input variable as a string without
- XML/HTML being stripped from the input value.
-
- $filter_options - an bitmask that supports the
- following flags:
-
- * STRIP_LOW: excludes all characters < 0x20 from the
- allowed character list
- * STRIP_HIGH: excludes all characters >= 0x80 from
- the allowed character list
- * ENCODE_LOW: allows characters < 0x20 but encodes
- them as numerical HTML entities
- * ENCODE_HIGH: allows characters >= 0x80 but encodes
- them as numerical HTML entities
- * ENCODE_AMP: encodes & as &
-
- The flags STRIP_LOW and ENCODE_LOW are mutual
- exclusive, and so are STRIP_HIGH and ENCODE_HIGH. In
- the case they clash, the characters will be
- stripped.
-
-email EMAIL string Removes all characters that can not be part of a
- correctly formed e-mail address (exception are
- comments in the email address) (a-z A-Z 0-9 " ! # $
- % & ' * + - / = ? ^ _ ` { | } ~ @ . [ ]). This
- filter does `not` validate if the e-mail address has
- the correct format, use the validate_email filter
- for that.
-
-url URL string Removes all characters that can not be part of a
- correctly formed URI. (a-z A-Z 0-9 $ - _ . + ! * ' (
- ) , { } | \ ^ ~ [ ] ` < > # % " ; / ? : @ & =) This
- filter does `not` validate if a URI has the correct
- format, use the validate_url filter for that.
-
-number_int NUMBER_INT int Removes all characters that are [^0-9+-].
-
-number_float NUMBER_FLOAT float Removes all characters that are [^0-9+-].
-
- $filter_options - an bitmask that supports the
- following flags:
-
- * ALLOW_FRACTION: adds "." to the characters that
- are not stripped.
- * ALLOW_THOUSAND: adds "," to the characters that
- are not stripped.
- * ALLOW_SCIENTIFIC: adds "eE" to the characters that
- are not stripped.
-
-magic_quotes MAGIC_QUOTES string BC filter for people who like magic quotes.
-============= ================ =========== =====================================================
-
-
-Callback Filter
-===============
-
-This filter will callback to the specified callback function as specified with
-the *filter_options* parameter. All variants of callback functions are
-supported:
-
-* function with *'functionname'*
-* static method with *array('classname', 'methodname')*
-* dynamic method with *array(&$this, 'methodname')*
-
-The constants should be prepended by `FILTER_` when used with php.
-
-============= =========== =========== =====================================================
-Name Constant Return Type Description
-============= =========== =========== =====================================================
-callback CALLBACK mixed Calls the callback function/method with the input
- variable's value by reference which can do filtering
- and modifying of the input value. If the callback
- function returns "false" then the input value is
- supposed to be incorrect and the returned value will
- be 'false' (and an E_NOTICE will be raised).
-============= =========== =========== =====================================================
-
-The callback function's prototype is:
-
-boolean callback(&$value, $characterset);
- With *$value* being a reference to the input variable and *$characterset*
- containing the same value as this parameter's value in the call to
- *input_get()* or *input_get_array()*. If the *$characterset* parameter was
- not passed, it defaults to *'null'*.
-
-Version: $Id$
-.. vim: et syn=rst tw=78
-