ApacheRequest
class ApacheRequest extends Request
Request represents an HTTP request from an Apache server.
Constants
HEADER_CLIENT_IP |
|
HEADER_CLIENT_HOST |
|
HEADER_CLIENT_PROTO |
|
HEADER_CLIENT_PORT |
|
Properties
ParameterBag | $attributes | Custom parameters | from Request |
ParameterBag | $request | Request body parameters ($_POST) | from Request |
ParameterBag | $query | Query string parameters ($_GET) | from Request |
ServerBag | $server | Server and execution environment parameters ($_SERVER) | from Request |
FileBag | $files | Uploaded files ($_FILES) | from Request |
ParameterBag | $cookies | Cookies ($_COOKIE) | from Request |
HeaderBag | $headers | Headers (taken from the $_SERVER) | from Request |
Methods
Constructor.
Sets the parameters for this request.
Creates a new request with values from PHP's super globals.
Creates a Request based on a given URI and configuration.
Clones a request and overrides some of its parameters.
Overrides the PHP global variables according to this request instance.
Sets the name for trusted headers.
Enables support for the _method request parameter to determine the intended HTTP method.
Checks whether support for the _method request parameter is enabled.
Gets a "parameter" value.
Whether the request contains a Session which was started in one of the previous requests.
Associates a format with mime types.
Returns the request body content.
Returns the preferred language.
Gets a list of content types acceptable by the client browser
Details
in Request at line line 212
__construct(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), string $content = null)
Constructor.
in Request at line line 232
initialize(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), string $content = null)
Sets the parameters for this request.
This method also re-initializes all properties.
in Request at line line 261
static Request
createFromGlobals()
Creates a new request with values from PHP's super globals.
in Request at line line 293
static Request
create(string $uri, string $method = 'GET', array $parameters = array(), array $cookies = array(), array $files = array(), array $server = array(), string $content = null)
Creates a Request based on a given URI and configuration.
The information contained in the URI always take precedence over the other information (server and parameters).
in Request at line line 398
Request
duplicate(array $query = null, array $request = null, array $attributes = null, array $cookies = null, array $files = null, array $server = null)
Clones a request and overrides some of its parameters.
in Request at line line 447
__clone()
Clones the current request.
Note that the session is not cloned as duplicated requests are most of the time sub-requests of the main one.
in Request at line line 463
string
__toString()
Returns the request as a string.
in Request at line line 479
overrideGlobals()
Overrides the PHP global variables according to this request instance.
It overrides $GET, $POST, $REQUEST, $SERVER, $COOKIE. $FILES is never override, see rfc1867
in Request at line line 515
static
setTrustedProxies(array $proxies)
Sets a list of trusted proxies.
You should only list the reverse proxies that you manage directly.
in Request at line line 525
static array
getTrustedProxies()
Gets the list of trusted proxies.
in Request at line line 537
static
setTrustedHosts(array $hostPatterns)
Sets a list of trusted host patterns.
You should only list the hosts you manage using regexs.
in Request at line line 551
static array
getTrustedHosts()
Gets the list of trusted host patterns.
in Request at line line 573
static
setTrustedHeaderName(string $key, string $value)
Sets the name for trusted headers.
The following header keys are supported:
- Request::HEADERCLIENTIP: defaults to X-Forwarded-For (see getClientIp())
- Request::HEADERCLIENTHOST: defaults to X-Forwarded-Host (see getClientHost())
- Request::HEADERCLIENTPORT: defaults to X-Forwarded-Port (see getClientPort())
- Request::HEADERCLIENTPROTO: defaults to X-Forwarded-Proto (see getScheme() and isSecure())
Setting an empty value allows to disable the trusted header for the given key.
in Request at line line 591
static string
getTrustedHeaderName(string $key)
Gets the trusted proxy header name.
in Request at line line 610
static string
normalizeQueryString(string $qs)
Normalizes a query string.
It builds a normalized query string, where keys/value pairs are alphabetized, have consistent escaping and unneeded delimiters are removed.
in Request at line line 651
static
enableHttpMethodParameterOverride()
Enables support for the _method request parameter to determine the intended HTTP method.
Be warned that enabling this feature might lead to CSRF issues in your code. Check that you are using CSRF tokens when required.
The HTTP method can only be overridden when the real HTTP method is POST.
in Request at line line 661
static Boolean
getHttpMethodParameterOverride()
Checks whether support for the _method request parameter is enabled.
in Request at line line 687
mixed
get(string $key, mixed $default = null, Boolean $deep = false)
Gets a "parameter" value.
This method is mainly useful for libraries that want to provide some flexibility.
Order of precedence: GET, PATH, POST
Avoid using this method in controllers:
- slow
- prefer to get from a "named" source
It is better to explicitly get request parameters from the appropriate public property instead (query, attributes, request).
in Request at line line 699
SessionInterface|null
getSession()
Gets the Session.
in Request at line line 712
Boolean
hasPreviousSession()
Whether the request contains a Session which was started in one of the previous requests.
in Request at line line 729
Boolean
hasSession()
Whether the request contains a Session object.
This method does not give any information about the state of the session object, like whether the session is started or not. It is just a way to check if this Request is associated with a Session instance.
in Request at line line 741
setSession(SessionInterface $session)
Sets the Session.
in Request at line line 759
array
getClientIps()
Returns the client IP addresses.
In the returned array the most trusted IP address is first, and the least trusted one last. The "real" client IP address is the last one, but this is also the least trusted one. Trusted proxies are stripped.
Use this method carefully; you should use getClientIp() instead.
in Request at line line 807
string
getClientIp()
Returns the client IP address.
This method can read the client IP address from the "X-Forwarded-For" header when trusted proxies were set via "setTrustedProxies()". The "X-Forwarded-For" header value is a comma+space separated list of IP addresses, the left-most being the original client, and each successive proxy that passed the request adding the IP address where it received the request from.
If your reverse proxy uses a different header name than "X-Forwarded-For", ("Client-Ip" for instance), configure it via "setTrustedHeaderName()" with the "client-ip" key.
in Request at line line 821
string
getScriptName()
Returns current script name.
in Request at line line 842
string
getPathInfo()
Returns the path being requested relative to the executed script.
The path info always starts with a /.
Suppose this request is instantiated from /mysite on localhost:
- http://localhost/mysite returns an empty string
- http://localhost/mysite/about returns '/about'
- http://localhost/mysite/enco%20ded returns '/enco%20ded'
- http://localhost/mysite/about?var=1 returns '/about'
in Request at line line 865
string
getBasePath()
Returns the root path from which this request is executed.
Suppose that an index.php file instantiates this request object:
- http://localhost/index.php returns an empty string
- http://localhost/index.php/page returns an empty string
- http://localhost/web/index.php returns '/web'
- http://localhost/we%20b/index.php returns '/we%20b'
in Request at line line 886
string
getBaseUrl()
Returns the root URL from which this request is executed.
The base URL never ends with a /.
This is similar to getBasePath(), except that it also includes the script filename (e.g. index.php) if one exists.
in Request at line line 902
string
getScheme()
Gets the request's scheme.
in Request at line line 922
string
getPort()
Returns the port on which the request is made.
This method can read the client port from the "X-Forwarded-Port" header when trusted proxies were set via "setTrustedProxies()".
The "X-Forwarded-Port" header must contain the client port.
If your reverse proxy uses a different header name than "X-Forwarded-Port", configure it via "setTrustedHeaderName()" with the "client-port" key.
in Request at line line 950
string|null
getUser()
Returns the user.
in Request at line line 960
string|null
getPassword()
Returns the password.
in Request at line line 970
string
getUserInfo()
Gets the user info.
in Request at line line 991
string
getHttpHost()
Returns the HTTP host being requested.
The port name will be appended to the host if it's non-standard.
in Request at line line 1010
string
getRequestUri()
Returns the requested URI.
in Request at line line 1027
string
getSchemeAndHttpHost()
Gets the scheme and HTTP host.
If the URL was called with basic authentication, the user and the password are not added to the generated string.
in Request at line line 1041
string
getUri()
Generates a normalized URI for the Request.
in Request at line line 1059
string
getUriForPath(string $path)
Generates a normalized URI for the given path.
in Request at line line 1074
string|null
getQueryString()
Generates the normalized query string for the Request.
It builds a normalized query string, where keys/value pairs are alphabetized and have consistent escaping.
in Request at line line 1097
Boolean
isSecure()
Checks whether the request is secure or not.
This method can read the client port from the "X-Forwarded-Proto" header when trusted proxies were set via "setTrustedProxies()".
The "X-Forwarded-Proto" header must contain the protocol: "https" or "http".
If your reverse proxy uses a different header name than "X-Forwarded-Proto" ("SSL_HTTPS" for instance), configure it via "setTrustedHeaderName()" with the "client-proto" key.
in Request at line line 1123
string
getHost()
Returns the host name.
This method can read the client port from the "X-Forwarded-Host" header when trusted proxies were set via "setTrustedProxies()".
The "X-Forwarded-Host" header must contain the client host name.
If your reverse proxy uses a different header name than "X-Forwarded-Host", configure it via "setTrustedHeaderName()" with the "client-host" key.
in Request at line line 1173
setMethod(string $method)
Sets the request method.
in Request at line line 1196
string
getMethod()
Gets the request "intended" method.
If the X-HTTP-Method-Override header is set, and if the method is a POST, then it is used to determine the "real" intended HTTP method.
The _method request parameter can also be used to determine the HTTP method, but only if enableHttpMethodParameterOverride() has been called.
The method is always an uppercased string.
in Request at line line 1220
string
getRealMethod()
Gets the "real" request method.
in Request at line line 1234
string
getMimeType(string $format)
Gets the mime type associated with the format.
in Request at line line 1252
string|null
getFormat(string $mimeType)
Gets the format associated with the mime type.
in Request at line line 1279
setFormat(string $format, string|array $mimeTypes)
Associates a format with mime types.
in Request at line line 1303
string
getRequestFormat(string $default = 'html')
Gets the request format.
Here is the process to determine the format:
- format defined by the user (with setRequestFormat())
- _format request parameter
- $default
in Request at line line 1319
setRequestFormat(string $format)
Sets the request format.
in Request at line line 1331
string|null
getContentType()
Gets the format associated with the request.
in Request at line line 1343
setDefaultLocale(string $locale)
Sets the default locale.
in Request at line line 1359
setLocale(string $locale)
Sets the locale.
in Request at line line 1369
string
getLocale()
Get the locale.
in Request at line line 1381
Boolean
isMethod(string $method)
Checks if the request method is of specified type.
in Request at line line 1393
Boolean
isMethodSafe()
Checks whether the method is safe or not.
in Request at line line 1407
string|resource
getContent(Boolean $asResource = false)
Returns the request body content.
in Request at line line 1431
array
getETags()
Gets the Etags.
in Request at line line 1439
Boolean
isNoCache()
in Request at line line 1453
string|null
getPreferredLanguage(array $locales = null)
Returns the preferred language.
in Request at line line 1488
array
getLanguages()
Gets a list of languages acceptable by the client browser.
in Request at line line 1530
array
getCharsets()
Gets a list of charsets acceptable by the client browser.
in Request at line line 1546
array
getAcceptableContentTypes()
Gets a list of content types acceptable by the client browser
in Request at line line 1566
Boolean
isXmlHttpRequest()
Returns true if the request is a XMLHttpRequest.
It works if your JavaScript library set an X-Requested-With HTTP header. It is known to work with common JavaScript frameworks: