BlueSpice MediaWiki master
 All Classes Namespaces Files Functions Variables Groups Pages
WebRequest Class Reference
Inheritance diagram for WebRequest:
Collaboration diagram for WebRequest:

Public Member Functions

 __construct ()
 
 getElapsedTime ()
 
 getProtocol ()
 
 interpolateTitle ()
 
 normalizeUnicode ($data)
 
 getRawVal ($name, $default=null)
 
 getVal ($name, $default=null)
 
 setVal ($key, $value)
 
 unsetVal ($key)
 
 getArray ($name, $default=null)
 
 getIntArray ($name, $default=null)
 
 getInt ($name, $default=0)
 
 getIntOrNull ($name)
 
 getFloat ($name, $default=0.0)
 
 getBool ($name, $default=false)
 
 getFuzzyBool ($name, $default=false)
 
 getCheck ($name)
 
 getText ($name, $default= '')
 
 getValues ()
 
 getValueNames ($exclude=[])
 
 getQueryValues ()
 
 getRawQueryString ()
 
 getRawPostString ()
 
 getRawInput ()
 
 getMethod ()
 
 wasPosted ()
 
 getSession ()
 
 setSessionId (SessionId $sessionId)
 
 getSessionId ()
 
 getCookie ($key, $prefix=null, $default=null)
 
 getRequestURL ()
 
 getFullRequestURL ()
 
 appendQueryValue ($key, $value)
 
 appendQueryArray ($array)
 
 getLimitOffset ($deflimit=50, $optionname= 'rclimit')
 
 getFileTempname ($key)
 
 getUploadError ($key)
 
 getFileName ($key)
 
 getUpload ($key)
 
 response ()
 
 getAllHeaders ()
 
 getHeader ($name, $flags=0)
 
 getSessionData ($key)
 
 setSessionData ($key, $data)
 
 checkUrlExtension ($extWhitelist=[])
 
 getAcceptLang ()
 
 getIP ()
 
 setIP ($ip)
 
 hasSafeMethod ()
 
 isSafeRequest ()
 
 markAsSafeRequest ()
 

Static Public Member Functions

static getPathInfo ($want= 'all')
 
static detectServer ()
 
static detectProtocol ()
 
static getRequestId ()
 
static overrideRequestId ($id)
 
static extractTitle ($path, $bases, $key=false)
 
static getGlobalRequestURL ()
 

Public Attributes

 $headers = []
 
const GETHEADER_LIST = 1
 

Protected Member Functions

 initHeaders ()
 
 doSecurityRedirect ($url)
 
 getRawIP ()
 

Protected Attributes

 $data
 
 $requestTime
 
 $protocol
 
 $sessionId = null
 
 $markedAsSafe = false
 

Detailed Description

The WebRequest class encapsulates getting at data passed in the URL or via a POSTed form stripping illegal input characters and normalizing Unicode sequences.

Constructor & Destructor Documentation

WebRequest::__construct ( )

Member Function Documentation

WebRequest::appendQueryArray (   $array)

Appends or replaces value of query variables.

Parameters
array$arrayArray of values to replace/add to query
Returns
string
WebRequest::appendQueryValue (   $key,
  $value 
)
Parameters
string$key
string$value
Returns
string
WebRequest::checkUrlExtension (   $extWhitelist = [])

Check if Internet Explorer will detect an incorrect cache extension in PATH_INFO or QUERY_STRING. If the request can't be allowed, show an error message or redirect to a safer URL. Returns true if the URL is OK, and false if an error message has been shown and the request should be aborted.

Parameters
array$extWhitelist
Exceptions
HttpError
Returns
bool
static WebRequest::detectProtocol ( )
static

Detect the protocol from $_SERVER. This is for use prior to Setup.php, when no WebRequest object is available. At other times, use the non-static function getProtocol().

Returns
string
static WebRequest::detectServer ( )
static

Work out an appropriate URL prefix containing scheme and host, based on information detected from $_SERVER

Returns
string
WebRequest::doSecurityRedirect (   $url)
protected

Attempt to redirect to a URL with a QUERY_STRING that's not dangerous in IE 6. Returns true if it was successful, false otherwise.

Parameters
string$url
Returns
bool
static WebRequest::extractTitle (   $path,
  $bases,
  $key = false 
)
static

URL rewriting function; tries to extract page title and, optionally, one other fixed parameter value from a URL path.

Parameters
string$pathThe URL path given from the client
array$basesOne or more URLs, optionally with $1 at the end
string | bool$keyIf provided, the matching key in $bases will be passed on as the value of this URL parameter
Returns
array Array of URL variables to interpolate; empty if no match
WebRequest::getAcceptLang ( )

Parse the Accept-Language header sent by the client into an array

Returns
array Array( languageCode => q-value ) sorted by q-value in descending order then appearing time in the header in ascending order. May contain the "language" '*', which applies to languages other than those explicitly listed. This is aligned with rfc2616 section 14.4 Preference for earlier languages appears in rfc3282 as an extension to HTTP/1.1.
WebRequest::getAllHeaders ( )

Get an array containing all request headers

Returns
array Mapping header name to its value
WebRequest::getArray (   $name,
  $default = null 
)

Fetch an array from the input or return $default if it's not set. If source was scalar, will return an array with a single element. If no source and no default, returns null.

Parameters
string$name
array$defaultOptional default (or null)
Returns
array|null
WebRequest::getBool (   $name,
  $default = false 
)

Fetch a boolean value from the input or return $default if not set. Guaranteed to return true or false, with normal PHP semantics for boolean interpretation of strings.

Parameters
string$name
bool$default
Returns
bool
WebRequest::getCheck (   $name)

Return true if the named value is set in the input, whatever that value is (even "0"). Return false if the named value is not set. Example use is checking for the presence of check boxes in forms.

Parameters
string$name
Returns
bool
WebRequest::getCookie (   $key,
  $prefix = null,
  $default = null 
)

Get a cookie from the $_COOKIE jar

Parameters
string$keyThe name of the cookie
string$prefixA prefix to use for the cookie name, if not $wgCookiePrefix
mixed$defaultWhat to return if the value isn't found
Returns
mixed Cookie value or $default if the cookie not set
WebRequest::getElapsedTime ( )

Get the number of seconds to have elapsed since request start, in fractional seconds, with microsecond resolution.

Returns
float
Since
1.25
WebRequest::getFileName (   $key)

Return the original filename of the uploaded file, as reported by the submitting user agent. HTML-style character entities are interpreted and normalized to Unicode normalization form C, in part to deal with weird input from Safari with non-ASCII filenames.

Other than this the name is not verified for being a safe filename.

Parameters
string$key
Returns
string|null String or null if no such file.
WebRequest::getFileTempname (   $key)

Return the path to the temporary file where PHP has stored the upload.

Parameters
string$key
Returns
string|null String or null if no such file.
WebRequest::getFloat (   $name,
  $default = 0.0 
)

Fetch a floating point value from the input or return $default if not set. Guaranteed to return a float; non-numeric input will typically return 0.

Since
1.23
Parameters
string$name
float$default
Returns
float
WebRequest::getFullRequestURL ( )

Return the request URI with the canonical service and hostname, path, and query string. This will be suitable for use as an absolute link in HTML or other output.

If $wgServer is protocol-relative, this will return a fully qualified URL with the protocol that was used for this request.

Returns
string
WebRequest::getFuzzyBool (   $name,
  $default = false 
)

Fetch a boolean value from the input or return $default if not set. Unlike getBool, the string "false" will result in boolean false, which is useful when interpreting information sent from JavaScript.

Parameters
string$name
bool$default
Returns
bool
static WebRequest::getGlobalRequestURL ( )
static

Return the path and query string portion of the main request URI. This will be suitable for use as a relative link in HTML output.

Exceptions
MWException
Returns
string
WebRequest::getHeader (   $name,
  $flags = 0 
)

Get a request header, or false if it isn't set.

Parameters
string$nameCase-insensitive header name
int$flagsBitwise combination of: WebRequest::GETHEADER_LIST Treat the header as a comma-separated list of values, as described in RFC 2616 ยง 4.2. (since 1.26).
Returns
string|array|bool False if header is unset; otherwise the header value(s) as either a string (the default) or an array, if WebRequest::GETHEADER_LIST flag was set.
WebRequest::getInt (   $name,
  $default = 0 
)

Fetch an integer value from the input or return $default if not set. Guaranteed to return an integer; non-numeric input will typically return 0.

Parameters
string$name
int$default
Returns
int
WebRequest::getIntArray (   $name,
  $default = null 
)

Fetch an array of integers, or return $default if it's not set. If source was scalar, will return an array with a single element. If no source and no default, returns null. If an array is returned, contents are guaranteed to be integers.

Parameters
string$name
array$defaultOption default (or null)
Returns
array Array of ints
WebRequest::getIntOrNull (   $name)

Fetch an integer value from the input or return null if empty. Guaranteed to return an integer or null; non-numeric input will typically return null.

Parameters
string$name
Returns
int|null
WebRequest::getIP ( )

Work out the IP address based on various globals For trusted proxies, use the XFF client IP (first of the chain)

Since
1.19
Exceptions
MWException
Returns
string
WebRequest::getLimitOffset (   $deflimit = 50,
  $optionname = 'rclimit' 
)

Check for limit and offset parameters on the input, and return sensible defaults if not given. The limit must be positive and is capped at 5000. Offset must be positive but is not capped.

Parameters
int$deflimitLimit to use if no input and the user hasn't set the option.
string$optionnameTo specify an option other than rclimit to pull from.
Returns
int[] First element is limit, second is offset
WebRequest::getMethod ( )

Get the HTTP method used for this request.

Returns
string
static WebRequest::getPathInfo (   $want = 'all')
static

Extract relevant query arguments from the http request uri's path to be merged with the normal php provided query arguments. Tries to use the REQUEST_URI data if available and parses it according to the wiki's configuration looking for any known pattern.

If the REQUEST_URI is not provided we'll fall back on the PATH_INFO provided by the server if any and use that to set a 'title' parameter.

Parameters
string$wantIf this is not 'all', then the function will return an empty array if it determines that the URL is inside a rewrite path.
Returns
array Any query arguments found in path matches.
WebRequest::getProtocol ( )

Get the current URL protocol (http or https)

Returns
string
WebRequest::getQueryValues ( )

Get the values passed in the query string. No transformation is performed on the values.

Returns
array
WebRequest::getRawInput ( )

Return the raw request body, with no processing. Cached since some methods disallow reading the stream more than once. As stated in the php docs, this does not work with enctype="multipart/form-data".

Returns
string
WebRequest::getRawIP ( )
protected

Fetch the raw IP from the request

Since
1.19
Exceptions
MWException
Returns
string
WebRequest::getRawPostString ( )

Return the contents of the POST with no decoding. Use when you need to know exactly what was sent, e.g. for an OAuth signature over the elements.

Returns
string
WebRequest::getRawQueryString ( )

Return the contents of the Query with no decoding. Use when you need to know exactly what was sent, e.g. for an OAuth signature over the elements.

Returns
string
WebRequest::getRawVal (   $name,
  $default = null 
)

Fetch a scalar from the input without normalization, or return $default if it's not set.

Unlike self::getVal(), this does not perform any normalization on the input value.

Since
1.28
Parameters
string$name
string | null$default
Returns
string|null
static WebRequest::getRequestId ( )
static

Get the unique request ID. This is either the value of the UNIQUE_ID envvar (if present) or a randomly-generated 24-character string.

Returns
string
Since
1.27
WebRequest::getRequestURL ( )

Return the path and query string portion of the request URI. This will be suitable for use as a relative link in HTML output.

Exceptions
MWException
Returns
string
WebRequest::getSession ( )

Return the session for this request

This might unpersist an existing session if it was invalid.

Since
1.27
Note
For performance, keep the session locally if you will be making much use of it instead of calling this method repeatedly.
Returns
Session
WebRequest::getSessionData (   $key)

Get data from the session

Note
Prefer $this->getSession() instead if making multiple calls.
Parameters
string$keyName of key in the session
Returns
mixed
WebRequest::getSessionId ( )

Get the session id for this request, if any

Since
1.27 For use by MediaWiki classes only
Returns
SessionId|null
WebRequest::getText (   $name,
  $default = '' 
)

Fetch a text string from the given array or return $default if it's not set. Carriage returns are stripped from the text. This should generally be used for form "<textarea>" and "<input>" fields, and for user-supplied freeform text input.

Parameters
string$name
string$defaultOptional
Returns
string
WebRequest::getUpload (   $key)

Return a WebRequestUpload object corresponding to the key

Parameters
string$key
Returns
WebRequestUpload
WebRequest::getUploadError (   $key)

Return the upload error or 0

Parameters
string$key
Returns
int
WebRequest::getVal (   $name,
  $default = null 
)

Fetch a scalar from the input or return $default if it's not set. Returns a string. Arrays are discarded. Useful for non-freeform text inputs (e.g. predefined internal text keys selected by a drop-down menu). For freeform input, see getText().

Parameters
string$name
string | null$defaultOptional default (or null)
Returns
string|null
WebRequest::getValueNames (   $exclude = [])

Returns the names of all input values excluding those in $exclude.

Parameters
array$exclude
Returns
array
WebRequest::getValues ( )

Extracts the given named values into an array. If no arguments are given, returns all input values. No transformation is performed on the values.

Returns
array
WebRequest::hasSafeMethod ( )

Check if this request uses a "safe" HTTP method

Safe methods are verbs (e.g. GET/HEAD/OPTIONS) used for obtaining content. Such requests are not expected to mutate content, especially in ways attributable to the client. Verbs like POST and PUT are typical of non-safe requests which often change content.

Returns
bool
See Also
https://tools.ietf.org/html/rfc7231#section-4.2.1
https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
Since
1.28
WebRequest::initHeaders ( )
protected

Initialise the header list

WebRequest::interpolateTitle ( )

Check for title, action, and/or variant data in the URL and interpolate it into the GET variables. This should only be run after $wgContLang is available, as we may need the list of language variants to determine available variant URLs.

WebRequest::isSafeRequest ( )

Whether this request should be identified as being "safe"

This means that the client is not requesting any state changes and that database writes are not inherently required. Ideally, no visible updates would happen at all. If they must, then they should not be publically attributed to the end user.

In more detail:

  • Cache populations and refreshes MAY occur.
  • Private user session updates and private server logging MAY occur.
  • Updates to private viewing activity data MAY occur via DeferredUpdates.
  • Other updates SHOULD NOT occur (e.g. modifying content assets).
Returns
bool
See Also
https://tools.ietf.org/html/rfc7231#section-4.2.1
https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
Since
1.28
WebRequest::markAsSafeRequest ( )

Mark this request as identified as being nullipotent even if it is a POST request

POST requests are often used due to the need for a client payload, even if the request is otherwise equivalent to a "safe method" request.

See Also
https://tools.ietf.org/html/rfc7231#section-4.2.1
https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
Since
1.28
WebRequest::normalizeUnicode (   $data)

Recursively normalizes UTF-8 strings in the given array.

Parameters
string | array$data
Returns
array|string Cleaned-up version of the given
static WebRequest::overrideRequestId (   $id)
static

Override the unique request ID. This is for sub-requests, such as jobs, that wish to use the same id but are not part of the same execution context.

Parameters
string$id
Since
1.27
WebRequest::response ( )

Return a handle to WebResponse style object, for setting cookies, headers and other stuff, for Request being worked on.

Returns
WebResponse
WebRequest::setIP (   $ip)
Parameters
string$ip
Returns
void
Since
1.21
WebRequest::setSessionData (   $key,
  $data 
)

Set session data

Note
Prefer $this->getSession() instead if making multiple calls.
Parameters
string$keyName of key in the session
mixed$data
WebRequest::setSessionId ( SessionId  $sessionId)

Set the session for this request

Since
1.27 For use by MediaWiki classes only
Parameters
SessionId$sessionId
WebRequest::setVal (   $key,
  $value 
)

Set an arbitrary value into our get/post data.

Parameters
string$keyKey name to use
mixed$valueValue to set
Returns
mixed Old value if one was present, null otherwise
WebRequest::unsetVal (   $key)

Unset an arbitrary value from our get/post data.

Parameters
string$keyKey name to use
Returns
mixed Old value if one was present, null otherwise
WebRequest::wasPosted ( )

Returns true if the present request was reached by a POST operation, false otherwise (GET, HEAD, or command-line).

Note that values retrieved by the object may come from the GET URL etc even on a POST request.

Returns
bool

Member Data Documentation

const WebRequest::GETHEADER_LIST = 1

Flag to make WebRequest::getHeader return an array of values.

Since
1.26

The documentation for this class was generated from the following file: