рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдореБрдЭреЗ рд╡рд╛рдИрдЖрдИрдЖрдИ рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рдПрдХ рдПрдкреАрдЖрдИ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╣реИред рдкреНрд░рд╛рдзрд┐рдХрд░рдг рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕рддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
рдШрд░ рдХрд╛ рдмрдирд╛ рд╕рддреНрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдХрд▓реНрдк
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ PHP рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХреБрдЫ рдПрдкреАрдЖрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЗрдЦреЗ рдереЗ, рдЬрдмрдХрд┐ рдореИрдВрдиреЗ рдХрднреА рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рджреЗрдЦрд╛ рдерд╛ рдЬрд╣рд╛рдВ PHP рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╕рддреНрд░ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рдШрд░-рдШрд░ рдХреЗ рд╕рддреНрд░реЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░рддрд╛ рдерд╛ред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛:
1. рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИред
2. рд╕рдлрд▓ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд░реНрд╡рд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (рд░реИрдВрдбрдо рд╣реИрд╢) рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕реНрдЯреЛрд░реЗрдЬ (рдбреЗрдЯрд╛рдмреЗрд╕, рдХреИрд╢ рдЗрддреНрдпрд╛рджрд┐) рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рдХреА рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдЕрдВрддрд┐рдо рдХреЙрд▓ рдХрд╛ рд╕рдордп рджреЗрддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдЗрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрддрд╛ рд╣реИред
3. рдХреНрд▓рд╛рдЗрдВрдЯ, рдЬрд┐рд╕реЗ рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЖрдЧреЗ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд╖рд┐рдд рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдпрд╛ рд╣реЗрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ) рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИред
4. рд╕рд░реНрд╡рд░, рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдбреЗрдЯрд╛ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХреЛ рдЕрдВрддрд┐рдо рдХреЙрд▓ рдХрд╛ рд╕рдордп рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред
рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдкреИрд░рд╛рдЧреНрд░рд╛рдл 3 рдФрд░ 4 рдореЗрдВ рдЗрдВрдЯрд░реИрдХреНрд╢рди рддрдм рддрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рддреНрд░ рд░рд┐рдХреЙрд░реНрдб рдирд╖реНрдЯ рди рд╣реЛ рдЬрд╛рдПред рд╕рддреНрд░ рдХреЗ рдирд╖реНрдЯ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЪрд░рдг 3 рдФрд░ 4 рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд░рдг 1 рдФрд░ 2 рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕рдордп-рд╕рдордп рдкрд░, рдЖрдкрдХреЛ рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдВрддрд┐рдо рдмрд╛рд░ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдЬреЛ рд╕рддреНрд░ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрджрд┐ рд╡реЗ рдЕрдкрдиреЗ рдЖрдк рд░рд┐рдХреЙрд░реНрдб рдирд╣реАрдВ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЬреАрд╡рди рднрд░ рдХреЗ рд▓рд┐рдПред рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ, рдХрд╛рдлреА рдХреБрдЫ рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдорд╛рдирдХ PHP рд╕рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╡рд┐рдХрд▓реНрдк
рдФрд░ рд╣рдо рдорд╛рдирдХ
PHP рд╕рддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ?
1) рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреАрдврд╝реАред
2) рд╕рддреНрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛, рд╕рд╛рде рд╣реА рдЖрд╡реЗрджрди рдореЗрдВ рдХрд╣реАрдВ рд╕реЗ рднреА рдЙрдирдХреЗ рдкреНрд░рдмрдВрдзрди рддрдХ рдкрд╣реБрдВрдЪред
3) рдЙрди рдкрд░ рд░реИрдкрд░ рд╕рд╣рд┐рдд рд╕рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ PHP рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Yii рдлреНрд░реЗрдорд╡рд░реНрдХ
рдХрд╛ рд╡рд░реНрдЧ
рдЪреЗрдЯрд╕реНрдкреЗрд╢рди ред
4) рдкрд╣рд▓реЗ рд╕реЗ рдмрдЪрд╛рдП рдЧрдП рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдмрд╣рд╛рд▓реАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╕реЗ рдмрдиреЗ рд╕рддреНрд░ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧрд┐рдиред
5) рдЕрдкрдиреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рддреНрд░реЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджреЗрдВред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреБрдХреА-рдЖрдзрд╛рд░рд┐рдд рд╕рддреНрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
1. рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ URL рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИред
2. рд╕рд░реНрд╡рд░ рд╢реАрд░реНрд╖рдХ "рд╕реЗрдЯ-рдХреБрдХреА" рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреБрдХреА рдореЗрдВ рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг "рд╕реЗрдЯ-рдХреБрдХреА" рд╢реАрд░реНрд╖рдХ:
Set-Cookie: PHPSESSID=p2799jqivvk8gnruif1lvtv5l5; path=/
3. рдмреНрд░рд╛рдЙрдЬрд╝рд░, рдХреБрдХреА рдореЗрдВ рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдирдП URL рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣реЗрдбрд░ "рдбреЗрд╡рд▓рдкрд░" рдХреЗ рд╕рд╛рде:
Cookie: PHPSESSID=p2799jqivvk8gnruif1lvtv5l5
4. рд╕рд░реНрд╡рд░ рдмреНрд░рд╛рдЙрдЬрд░ рдХреЛ рдкреЗрдЬ рджреЗрддрд╛ рд╣реИред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рд╕рднреА рдмрд╛рдж рдХреЗ рдЕрдиреБрд░реЛрдз рдПрдХ "рдХреБрдХреА" рд╢реАрд░реНрд╖рдХ рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред рдпрд╣ рд╕рдм рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ рдХреБрдХреАрдЬрд╝ рдЕрдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдХреБрдХреАрдЬрд╝ рдЕрдХреНрд╖рдо рд╣реИрдВ рдпрд╛ рдпрджрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдирд╣реАрдВ рд╣реИ? рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдмреЗрд╢рдХ, рдЖрдк рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗрдЯ рдкрд░ "рд╕реЗрдЯ-рдХреБрдХреА" рдФрд░ "рдХреБрдХреА" рд╣реЗрдбрд░ рдХреЗ рд░рд┐рд╕реЗрдкреНрд╢рди рдФрд░ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЪрд▓рд┐рдП рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди рджреЗрдЦреЗрдВред
рдПрдкреАрдЖрдИ рдореЗрдВ PHP рд╕рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рд╕рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЖрдкрдХреЛ рд╕рддреНрд░реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд
php.ini рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдВ:
session.use_cookies ,
session.use_only_cookies ,
session.use_trans_sid ред рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП PHP рд╕рддреНрд░ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
session.use_cookies = 0 session.use_only_cookies = 0 session.use_trans_sid = 1 session.name = session
рдмреЗрд╢рдХ, рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕реАрдзреЗ php.ini рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЙрдиреНрд╣реЗрдВ PHP рдлрд╝рдВрдХреНрд╢рди
ini_set рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде, рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдХреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рди рдХреЗрд╡рд▓ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ, рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдЖрджрд┐ рджреНрд╡рд╛рд░рд╛ рднреАред
рд╕рддреНрд░ рд╕рдХреНрд╖рдо рдХрд░рдирд╛
редuse_trans_sid рдкреИрд░рд╛рдореАрдЯрд░ рд╣рдореЗрдВ GET рдпрд╛ POST рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рдПрдХ REST API рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдПрдХ POST рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ REST PUT рдФрд░ DELETE рдЬреИрд╕реЗ рддрд░реАрдХреЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ GET рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдЬреЛ рдХрд┐ REST API рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╣рдордиреЗ GET рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдирд╛рдо session.name рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рднреА рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ PHPSESSID рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╛рд░рд┐рдд рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╡рд╛рд▓рд╛ URL рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
https://api.example.com/action?session=l2kkl7c9sm2dfedr767itc9966Yii рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ PHP рд╕рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ Yii рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдЗрд╕ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Yii
CHttpSession рд╡рд░реНрдЧ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдШрдЯрдХ рд╕рд░рдгреА рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд░рдгреА рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
'session' => array( 'autoStart' => true, 'cookieMode'=>'none', 'useTransparentSessionID' => true, 'sessionName' => 'session', 'timeout' => 28800, ),
рдЬрд╣рд╛рдБ
'cookieMode' => 'рдХреЛрдИ рдирд╣реАрдВ' php.ini рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ
session.use_cookies = 0 рдФрд░
session.use_only_cookies = 0 рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ'useTransparentSessionID' => true рд╕реЗрдЯ php.ini to
session.use_trans_sid = 1рдмрд╣реБрдд рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреЙрд▓ рд╡рд╛рд▓реА API рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рддреНрд░ рдбрд┐рд╕реНрдХ рдкрд░ "рд╕рд╛рджрд╛ рдкрд╛рда" рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЕрддреНрдпрдзрд┐рдХ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдПрдкреАрдЖрдИ рдореЗрдВ рдЧрд╣рдирддрд╛ рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдкрд░ рдПрдХ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдмрди рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рдХрд┐рд╕реА рдПрдХ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
1) рдПрд╕рдПрд╕рдбреА рдХреЗ рд╕рд╛рде рдбреНрд░рд╛рдЗрд╡ рдХреЛ рдмрджрд▓реЗрдВ;
2) рдПрд╕рдПрд╕рдбреА рдбрд┐рд╕реНрдХ рд╕реЗ рдПрдХ рд╕реНрддрд░ 10 рдЫрд╛рдкреЗ рдбрд╛рд▓реЗрдВ;
3) рдПрдХ рд░реИрдо рдбрд┐рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд┐рдирдХреНрд╕ рдкрд░ Tmpfs рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо;
4)
рдореЗрдордХрд╛рдЯреЗрдб рдореЗрдВ рднрдВрдбрд╛рд░рдг рд╕рддреНрд░ (рд░реИрдо рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛);
5)
рд░реЗрдбрд┐рд╕ рдореЗрдВ рднрдВрдбрд╛рд░рдг рд╕рддреНрд░ (рд░реИрдо рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛)ред
Redis рдореЗрдВ рд╕рддреНрд░ рднрдВрдбрд╛рд░рдг
рдореИрдВ рдЗрд╕рдХреА рд╡рд┐рднрд┐рдиреНрди рднрдВрдбрд╛рд░рдг рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг, рд░реЗрдбрд┐рд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдореИрдВ рд╕рд░реНрд╡рд░ рд░рд┐рдмреВрдЯ рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛ рд░рд┐рдХрд╡рд░реА (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рддреНрд░) рдХреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рднреА рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред Redis рдХреЛ рд╕рддреНрд░ рднрдВрдбрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ
Redis рдХреЗ рд▓рд┐рдП
Redis рд╕рд░реНрд╡рд░ рдФрд░
PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рджреЛрдиреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП,
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред рдПрдХ рд╕рдлрд▓ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдЖрдк Redis рдХреЗ рд▓рд┐рдП PHP рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реЗ
PHP рд╕рддреНрд░ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкрд╛рдПрдВрдЧреЗред рд╕реАрдзреЗ php.ini рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ Redis PHP Session рдХреЗ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ Yii рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕реЗрд╢рди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд░реВрдк рдореЗрдВ Redis рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдореБрдЭреЗ CHttpSession рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЗрд╕рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдФрд░ рдЕрдкрдиреА рдЦреБрдж рдХреА
RedisSessionManager рдХреНрд▓рд╛рд╕
рд▓рд┐рдЦреА ред
рдЕрдм рд╕рддреНрд░ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рдиреНрдпрд╛рд╕ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
'session' => array( 'class' => 'application.components.RedisSessionManager', 'autoStart' => true, 'cookieMode'=>'none', 'useTransparentSessionID' => true, 'sessionName' => 'session', 'saveHandler'=>'redis', 'savePath' => 'tcp://localhost:6379?database=10&prefix=session::', 'timeout' => 28800, ),
рдПрдкреАрдЖрдИ рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдЕрдм рдЖрдк рдПрдкреАрдЖрдИ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рд▓реЙрдЧрд┐рди рд╡рд┐рдзрд┐:
public function actionLogin() { $params = $this->getRequestParams(); $identity=new UserIdentity($params['username'],$params['password']); if($identity->authenticate()){ $this->sendResponse(Status::OK, array( 'session'=>Yii::app()->session->getSessionID(), 'message'=>'Successful login', )); }else{ $this->sendResponse(Status::UNAUTHORIZED, $identity->errorMessage); } }
рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ? рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдЕрдиреБрд░реЛрдз рд╕реЗ рдЖрдпрд╛ рд╣реИред рдлрд┐рд░ рд╣рдо рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рд╕рдлрд▓ рд▓реЙрдЧрд┐рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдиреНрдп рдПрдкреАрдЖрдИ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдЧреЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ UserIdentity рд╡рд░реНрдЧ рджрд┐рдЦрддрд╛ рд╣реИ:
class UserIdentity extends CUserIdentity { public function authenticate() { $account = Yii::app()->account->getByName($this->username); $password = Yii::app()->account->hashPassword($this->password); if(!$account || $this->username !== $account->username){ $this->errorCode = self::ERROR_USERNAME_INVALID; $this->errorMessage = 'User with username '.$this->username.' not found'; return false; } else if ($password !== $account->password) { $this->errorCode = self::ERROR_PASSWORD_INVALID; $this->errorMessage = 'Wrong password'; return false; } else { $this->errorCode = self::ERROR_NONE; Yii::app()->user->login($this); Yii::app()->user->setId($account->id); Yii::app()->user->setName($account->nickname); return true; } } }
рд╕рдлрд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдШрдЯрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдШрдЯрдХ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓реЗ рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд▓реЙрдЧрдЖрдЙрдЯ рд╡рд┐рдзрд┐:
public function actionLogout() { if(Yii::app()->session->destroySession()){ $this->sendResponse(Status::OK, 'Successful logout'); }else{ $this->sendResponse(Status::BAD_REQUEST, 'Logout was not successful'); } }
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рдмрд╕ рдЕрдкрдиреА рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╡рд░реНрддрдорд╛рди рд╕рддреНрд░ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрдВред
рдореИрдВ рдПрдкреАрдЖрдИ рдореЗрдВ рд╕рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реБрдЭрд╛рд╡ рднреА рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:
1) рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рддрд╛рдХрд┐ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдЗрд╕рдХреЗ рдЖрдЧреЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдЕрд╡рд░реЛрдзрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рди рджреЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк HTTPS рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
2) рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╕рддреНрд░ рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рддреЛ рдЖрдк рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рддреНрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЖрдИрдкреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рддреНрд░ рдХреЛ рдмрд╛рдВрдзреЗрдВ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЖрдИрдкреА рдХреЛ рд╕рддреНрд░ рдХреЗ рдЕрдВрджрд░ рд░рдЦреЗрдВ рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрдЧрд▓реЗ рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдЖрдИрдкреА рд╡рд░реНрддрдорд╛рди рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕рддреНрд░ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
3) рд╕рддреНрд░ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдкрд░ рдПрдХ рд╕реАрдорд╛ рд░рдЦреЗрдВред рдЪреВрдВрдХрд┐ рдпрд╣ рд╕рдордп рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓реЗ рдЕрдиреБрд░реЛрдз рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 2 рдШрдВрдЯреЗ рд╕реЗрдЯ рдХрд░реВрдВрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 2 рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИ, рддреЛ рд╕рддреНрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рддреНрд░ рднрдВрдбрд╛рд░рдг рдХреЗ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░реЗрдЧрд╛ред
рдЕрдВрдд рдореЗрдВ, рд╡рд╛рдИрдЖрдИрдЖрдИ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд░реЗрд╕реНрдЯ рдПрдкреАрдЖрдИ рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкрд░ рдПрдХ рд▓рдШреБ рдбреЗрдореЛ рд╡реАрдбрд┐рдпреЛ рд░реЗрдбрд┐рд╕ рдореЗрдВ рднрдВрдбрд╛рд░рдг рд╕рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдЦ рд▓реЗрдЦрдХ:
рд▓рдХреНрдЬрд╝рд░реАрджрд╛рдм