This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
symfony/src/Symfony/Component/HttpFoundation
Fabien Potencier c8bd45b2c7 merged branch denvned/getClientIp-fix (PR #7472)
This PR was merged into the 2.1 branch.

Discussion
----------

[HttpFoundation] getClientIp is fixed.

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | no

The getClientIp now returns ip of the earliest server in a proxy chain when all the servers in the chain are trusted proxies. Before this patch the getClientIp used to return null at such condition.
Some appropriate tests are added.

Commits
-------

c4da2d9 [HttpFoundation] getClientIp is fixed.
2013-04-09 18:02:56 +02:00
..
File Merge branch '2.0' into 2.1 2013-02-07 23:54:36 +01:00
Resources/stubs Nsdocblocks 2012-10-20 09:10:30 +02:00
Session [HttpFoundation] Fixed copy pasted comment from FlashBag in AttributeBag 2013-04-05 14:59:25 +02:00
Tests [HttpFoundation] getClientIp is fixed. 2013-03-25 11:05:20 +04:00
ApacheRequest.php [HttpFoundation] fixed ApacheRequest 2011-12-21 13:57:56 -08:00
CHANGELOG.md Update changelogs 2012-07-14 22:43:03 +01:00
composer.json Removed useless branch alias for dev-master in composer.json 2012-12-06 11:00:55 +01:00
Cookie.php [HttpFoundation] CS and phpdoc fixes 2012-06-25 18:21:41 +02:00
FileBag.php fixed CS 2012-07-09 14:54:20 +02:00
HeaderBag.php small changes 2013-03-31 20:13:07 +02:00
JsonResponse.php [HttpFoundation] fix #5271 (duplicated header in JsonResponse) 2012-08-17 01:52:46 +02:00
LICENSE updated license year 2013-01-04 17:59:43 +01:00
ParameterBag.php [HttpFoundation] CS and phpdoc fixes 2012-06-25 18:21:41 +02:00
phpunit.xml.dist [Components] Tests/Autoloading fixes 2012-05-01 17:51:41 +02:00
README.md [Components] Tests/Autoloading fixes 2012-05-01 17:51:41 +02:00
RedirectResponse.php Allow the targetUrl on a redirect response to be set explicilty. 2012-07-27 09:40:11 -05:00
Request.php [HttpFoundation] getClientIp is fixed. 2013-03-25 11:05:20 +04:00
RequestMatcher.php Merge branch '2.0' into 2.1 2012-12-11 11:33:11 +01:00
RequestMatcherInterface.php fixed CS 2012-07-09 14:54:20 +02:00
Response.php fixed CS 2013-03-01 11:39:52 +01:00
ResponseHeaderBag.php [HttpFoundation] optimize makeDisposition 2012-07-18 18:28:33 +03:00
ServerBag.php fixed docblock return type 2012-11-16 14:51:07 -02:00
StreamedResponse.php [HttpFoundation] moved the HTTP protocol check from StreamedResponse to Response (closes #5937) 2012-11-09 08:57:59 +01:00

HttpFoundation Component

HttpFoundation defines an object-oriented layer for the HTTP specification.

It provides an abstraction for requests, responses, uploaded files, cookies, sessions, ...

In this example, we get a Request object from the current PHP global variables:

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

$request = Request::createFromGlobals();
echo $request->getPathInfo();

You can also create a Request directly -- that's interesting for unit testing:

$request = Request::create('/?foo=bar', 'GET');
echo $request->getPathInfo();

And here is how to create and send a Response:

$response = new Response('Not Found', 404, array('Content-Type' => 'text/plain'));
$response->send();

The Request and the Response classes have many other methods that implement the HTTP specification.

Loading

If you are using PHP 5.3.x you must add the following to your autoloader:

// SessionHandlerInterface
if (!interface_exists('SessionHandlerInterface')) {
    $loader->registerPrefixFallback(__DIR__.'/../vendor/symfony/src/Symfony/Component/HttpFoundation/Resources/stubs');
}

Resources

You can run the unit tests with the following command:

phpunit