рд╣рдо Symfony2 рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдирд╛ рдврд╛рдВрдЪрд╛ рдмрдирд╛рддреЗ рд╣реИрдВред (рднрд╛рдЧ 2)

рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛

рднрд╛рдЧ 1
рднрд╛рдЧ реи
рднрд╛рдЧ рей
рднрд╛рдЧ рек
рднрд╛рдЧ 5

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдХреЛрдб рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдореЗрдВ рдЬрд╛рдПрдВ, рдореИрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдХрджрдо рдкреАрдЫреЗ рд╣рдЯрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдПрдХ рдирдЬрд╝рд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рд╢реБрджреНрдз PHP рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдПрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдХреНрдпреЛрдВ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЛрдб рдХреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рднреА, рдФрд░ рдХреНрдпреЛрдВ рд╕рд┐рдореНрдлрдиреА 2 рдШрдЯрдХреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдврд╛рдВрдЪреЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЦрд░реЛрдВрдЪ рд╕реЗ рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рдмрдирд╛рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред


рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рдордиреЗ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬреЛ "рдПрдкреНрд▓рд┐рдХреЗрд╢рди" рд▓рд┐рдЦрд╛ рдерд╛ рд╡рд╣ рдХрд╛рдлреА рд╕рд░рд▓ рдерд╛, рдЗрд╕рдореЗрдВ рдХрдИ рдХрдорд┐рдпрд╛рдБ рд╣реИрдВ:
<?php // framework/index.php $input = $_GET['name']; printf('Hello %s', $input); 


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрджрд┐ рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдирд╛рдо рдЪрд░ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдХ PHP рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХреА рдЬрд╛рдПрдЧреАред рдЪрд▓реЛ рдЗрд╕реЗ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ:
 <?php // framework/index.php $input = isset($_GET['name']) ? $_GET['name'] : 'World'; printf('Hello %s', $input); 


рдорд╛рдиреЛ рдпрд╛ рди рдорд╛рдиреЛ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЛрдб рдХрд╛ рдпрд╣ рдЫреЛрдЯрд╛ рд╕рд╛ рдЯреБрдХрдбрд╝рд╛ рд╕рдмрд╕реЗ рдЖрдо рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ - XSS (рдХреНрд░реЙрд╕-рд╕рд╛рдЗрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ)ред рдпрд╣рд╛рдБ рдПрдХ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ:
 <?php $input = isset($_GET['name']) ? $_GET['name'] : 'World'; header('Content-Type: text/html; charset=utf-8'); printf('Hello %s', htmlspecialchars($input, ENT_QUOTES, 'UTF-8')); 



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╢реБрд░реВ рдореЗрдВ рд╕рд░рд▓ рдХреЛрдб рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рдВрдЪ рдЬреЛрдбрд╝рдиреЗ рдФрд░ PHP рдХреА рдЪреЗрддрд╛рд╡рдиреА / рд╕реВрдЪрдирд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рджреМрд░рд╛рди рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рднреА рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╡рд╣рд╛рдБ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ PHP рдХреЛрдб рдХреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдирд╣реАрдВ рд╣реИ рдФрд░ рдмрджрд╕реВрд░рдд рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдпрд╣рд╛рдБ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЗ рд▓рд┐рдП PHPUnit рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
 <?php // framework/test.php class IndexTest extends \PHPUnit_Framework_TestCase { public function testHello() { $_GET['name'] = 'Fabien'; ob_start(); include 'index.php'; $content = ob_get_clean(); $this->assertEquals('Hello Fabien', $content); } } 


рдлрд┐рд▓рд╣рд╛рд▓, рдпрджрд┐ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рд╣реИрдВ рддреЛ рдХреЛрдб рдХреЛ рдкреБрд░рд╛рдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрдкрдиреЗ рдврд╛рдВрдЪреЗ рдХреЗ рдЕрдиреБрдХреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдЕрднреА рдкрдврд╝рдирд╛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рдкрд░ рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛ред


рд╣рдо HttpFoundation рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ OOP рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВред (HttpFoundation рдШрдЯрдХ рдХреЗ рд╕рд╛рде OOP рдЬрд╛рдирд╛)



рд╡реЗрдм рдЖрдзрд╛рд░рд┐рдд рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рддреЛ рд╣рдорд╛рд░реЗ рдврд╛рдВрдЪреЗ рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рд╕рд┐рджреНрдзрд╛рдВрдд HTTP рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

HTTP рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ (рдЬреИрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░) рдПрдХ рд╕рд░реНрд╡рд░ (рд╡реЗрдм тАЛтАЛрд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди) рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рддрд╛ рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕рдВрд╡рд╛рдж рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрджреЗрд╢, рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ: рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕рд░реНрд╡рд░ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИред

PHP рдореЗрдВ, рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ ( $ _GET, $ _POST, $ _FILE, $ _COOKIE, $ _SESSION ...) рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд╝рдВрдХреНрд╢рди (рдЗрдХреЛ, рд╣реЗрдбрд░, рд╕реЗрдЯрдХреНрдпреВрдХреА, ...) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред

рдПрдХ рдмреЗрд╣рддрд░ рдХреЛрдб рдХрд╛ рдкрд╣рд▓рд╛ рдХрджрдо рдПрдХ рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред HttpFoundation рдШрдЯрдХ рдХрд╛ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рд╡реИрд╢реНрд╡рд┐рдХ PHP рдЪрд░ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рд▓реЗрдпрд░ рд╕реЗ рдмрджрд▓рдирд╛ рд╣реИред

рдЗрд╕ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ composer.json рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬреЛрдбрд╝реЗрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ
 composer update 


рдЕрдВрдд рдореЗрдВ, autoload.php рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рдШрдЯрдХ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
 <?php // framework/autoload.php $loader->registerNamespace('Symfony\\Component\\HttpFoundation', __DIR__.'/vendor/symfony/http-foundation'); 


рдЕрдм, рд╣рдо " рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ " рдФрд░ " рд░рд┐рд╕реНрдкрд╛рдВрд╕ " рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
 <php // framework/index.php require_once __DIR__.'/autoload.php'; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; $request = Request::createFromGlobals(); $input = $request->get('name', 'World'); $response = new Response(sprintf('Hello %s', htmlspecialchars($input, ENT_QUOTES, 'UTF-8'))); $response->send(); 

CreateFromGlobals () рд╡рд┐рдзрд┐ PHP рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдиреБрд░реЛрдз рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИред
рднреЗрдЬреЗрдВ () рд╡рд┐рдзрд┐ " рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ " рд╡рд░реНрдЧ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдбреЗрдЯрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╡рд╛рдкрд╕ рднреЗрдЬрддреА рд╣реИ (рдкрд╣рд▓реЗ, рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрд╛рдж HTTP рд╣реЗрдбрд░)ред



рдкрд┐рдЫрд▓реЗ рдХреЛрдб рд╕реЗ рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ HTTP рд╕рдВрджреЗрд╢реЛрдВ рдкрд░ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рд╣реИред рдЖрдк рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдХреЛрдИ рднреА рдЕрдиреБрд░реЛрдз рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЬрдм рднреА рдЖрдк рдлрд┐рдЯ рджрд┐рдЦрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВред



" рдЕрдиреБрд░реЛрдз " рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде, рд╕рднреА рдЕрдиреБрд░реЛрдзрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рд╣рдореЗрд╢рд╛ рдЖрдкрдХреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░ рд╣реЛрддреА рд╣реИ, рдПрдХ рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕рд░рд▓ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж:
 <?php //  URI (.. /about)    $request->getPathInfo(); //  GET  POST  $request->query->get('foo'); $request->request->get('bar', 'default value if bar does not exist'); //   SERVER $request->server->get('HTTP_HOST'); //    "UploadedFile" ( )   foo $request->files->get('foo'); //    COOKIE $request->cookies->get('PHPSESSID'); //   HTTP  $request->headers->get('host'); $request->headers->get('content_type'); $request->getMethod(); // GET, POST, PUT, DELETE, HEAD $request->getLanguages(); //  ,    


рдЖрдк рдХрд┐рд╕реА рдЕрдиреБрд░реЛрдз рдХрд╛ рдЕрдиреБрдХрд░рдг рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 $request = Request::create('/index.php?name=Fabien'); 


" рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ " рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 <?php $response = new Response(); $response->setContent('Hello world!'); $response->setStatusCode(200); $response->headers->set('Content-Type', 'text/html'); //   HTTP  $response->setMaxAge(10); 




рдЕрдВрддрд┐рдо рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо, рдЗрди рд╡рд░реНрдЧреЛрдВ, рдЬреИрд╕реЗ рд╕рд┐рдореНрдлрдиреА рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╡рд░реНрдЧ рдХреА рддрд░рд╣, рд╕реБрд░рдХреНрд╖рд╛ рдореБрджреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдХрдВрдкрдиреА рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░, рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ рдХрд┐ рджреБрдирд┐рдпрд╛ рднрд░ рдХреЗ рдХрдИ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛрдб рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╛рд╡рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдореБрджреНрджреЛрдВ рдХреЛ рддрдп рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдШрд░-рдирд┐рд░реНрдорд┐рдд рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдкреЗрд╢реЗрд╡рд░ рд╕реБрд░рдХреНрд╖рд╛ рдСрдбрд┐рдЯ рдХрд╛ рдЖрджреЗрд╢ рдХрдм рджрд┐рдпрд╛ рдерд╛?

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдСрдкрд░реЗрд╢рди рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
 <?php if ($myIp == $_SERVER['REMOTE_ADDR']) { //   ,    } 


рдпрд╣ рддрдм рддрдХ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЙрддреНрдкрд╛рджрди рдкрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЗрд╕ рд╕рдордп рдЖрдкрдХреЛ рдХреЛрдб рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдпрд╣ рдЖрдкрдХреА рджреЛрдиреЛрдВ рдорд╢реАрдиреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░реЗ (рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрд╡рд░ рдкрд░ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдирд╣реАрдВ рд╣реИ):
 <?php if ($myIp == $_SERVER['HTTP_X_FORWARDED_FOR'] || $myIp == $_SERVER['REMOTE_ADDR']) { //   ,    } 

рдЕрдиреБрд░реЛрдз :: getClientIp () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рджрд┐рди рд╕реЗ рдПрдХ рд╡рд░реНрдХрд┐рдВрдЧ рдХреЛрдб рд╣реЛрдЧрд╛, рдЪрд╛рд╣реЗ рд╡рд╣ рдХрд┐рд╕реА рднреА рдкреНрд░реЙрдХреНрд╕реА рдХреА рдореМрдЬреВрджрдЧреА рдХрд╛ рд╣реЛред
 <?php $request = Request::createFromGlobals(); if ($myIp == $request->getClientIp()) { //   ,    } 

рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдн рднреА рд╣реИ: рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред рдореБрдЭреЗ рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ $ _SERVER ['HTTP_X_FORWARDED_FOR'] рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХреЗ рдмрд┐рдирд╛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЗрд╕рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ getClientIp () рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдк рдЗрд╕ рд╣реЗрдбрд░ рдХреЛ TrustProxyData () рдХрд╣рдХрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ:
 <?php Request::trustProxyData(); if ($myIp == $request->getClientIp(true)) { //   ,    } 


рдЗрд╕ рдкреНрд░рдХрд╛рд░, getClientIp () рд╕рднреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдордЬрд╝рдмреВрддреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреА рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рдпрд╣ рд╕рд╣реА рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрди рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ред рддреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рди рдХрд░реЗрдВ?

рдорд╛рдиреЛ рдпрд╛ рди рдорд╛рдиреЛ, рд▓реЗрдХрд┐рди рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓рд╛ рдврд╛рдВрдЪрд╛ рд╣реИред рдЖрдк рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВред Symfony2 HttpFoundation рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдкрдХреЛ рдмреЗрд╣рддрд░ рдФрд░ рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рддреЗрдЬреА рд╕реЗ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рднреА рджреЗрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреА рдЬрдЧрд╣ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреИрдирд┐рдХ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИрдВред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдбреНрд░реБрдкрд▓ рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдиреЗ (рдЖрдЧрд╛рдореА рд╕рдВрд╕реНрдХрд░рдг 8 рдХреЗ рд▓рд┐рдП) HttpFoundation рдШрдЯрдХ рдХреЛ рдЕрдкрдирд╛рдпрд╛ рд╣реИ; рдЕрдЧрд░ рдпрд╣ рдЙрдирдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╢рд╛рдпрдж рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдкрд╣рд┐рдпрд╛ рдХреЛ рд╕реБрджреГрдврд╝ рди рдХрд░реЗрдВред

рдореИрдВ рд▓рдЧрднрдЧ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдн рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛: HttpFoundation рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдмреЗрд╣рддрд░ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдЖрдЬ Symfony2 , Drupal 8 , PhpBB 4 , Silex , Midgif CMS , Zikula ...)ред

Source: https://habr.com/ru/post/In136430/


All Articles