рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП PHPред рд╕рддреНрд░

ElePHPantред рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП PHPред рдЕрдзрд┐рд╡реЗрд╢рди

рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛ рдпрд╣рд╛рдВ рд╢реБрд░реБрдЖрддреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП PHP рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╣реИред рдпрд╣ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реЛрдЧреА, рдХреЛрдИ рднреА echo "Hello World" рдирд╣реАрдВ рд╣реЛрдЧреА, рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдореЗрдХрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╣реЛрдорд╡рд░реНрдХ" рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдорд┐рд╢реНрд░рдг рдХреЗ рд╕рд╛рде PHP рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдЬреАрд╡рди рд╕реЗ рдХрдЯреНрдЯрд░ рд╣реЛрдЧрд╛ред

рдореИрдВ рд╕рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛ - рдпрд╣ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред рдЙрд╕рдХреЗ рдХрд╛рдо рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рди рд╕рдордЭрдХрд░ - рд╡реНрдпрд╛рдкрд╛рд░ рдХрд░реЗрдВред рдЗрд╕рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдореЗрдВ рдПрдХ рд╕рддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рд╣рдо рдЙрддреНрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдореБрдбрд╝рддреЗ рд╣реИрдВ - HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдПред

HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓


HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣рд╛рдЗрдкрд░ рдЯреЗрдХреНрд╕реНрдЯ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ - "рд╣рд╛рдЗрдкрд░рдЯреЗрдХреНрд╕реНрдЯ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓" - рдЕрд░реНрдерд╛рдд рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ - рдПрдХ рдкрд╛рда рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рдФрд░ рдЗрд╕реЗ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдпрд╣ рд╕рдордЭрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рддрд╣рдд рдХреЗрд╡рд▓ HTML рд╣реА рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрдЧрд╛, рдкрддрд╛ рдФрд░ рдирд╛рдо, рд▓реЗрдХрд┐рди рдЕрдм рд╡реЗ рдХреЗрд╡рд▓ рдФрд░ = ^ ^ ^ = рдФрд░ я╝ИтАв _ уЕЕ _ тАв understood рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ

рдЭрд╛рдбрд╝реА рдХреЗ рдЖрд╕рдкрд╛рд╕ рдирд╣реАрдВ рдорд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ рд╕рдВрдЪрд╛рд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВред
рдпрд╣рд╛рдБ рдЕрдиреБрд░реЛрдз рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдЬрдм рдЖрдк http://example.com рдкреГрд╖реНрда рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕реЗ рдХреИрд╕реЗ рднреЗрдЬрддрд╛ рд╣реИ:

 GET / HTTP/1.1 Host: example.com Accept: text/html < > 

рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ:

 HTTP/1.1 200 OK Content-Length: 1983 Content-Type: text/html; charset=utf-8 <html> <head>...</head> <body>...</body> </html> 

рдпреЗ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ HTTP рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  1. рдкреНрд░рд╛рд░рдВрдн рдкрдВрдХреНрддрд┐ - рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзрд┐рдд рдкреГрд╖реНрда рдХреА рд╡рд┐рдзрд┐ рдФрд░ рдкрде рд╣реИ - рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб
  2. рд╣реЗрдбрд░ - рдПрдХ рдмреГрд╣рджрд╛рдиреНрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдкреНрд░рд╛рд░реВрдк рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдирдИ рд╣реЗрдбрд┐рдВрдЧ рдХреЛ рдПрдХ рдирдИ рд▓рд╛рдЗрди рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ
  3. рд╕рдВрджреЗрд╢ рдирд┐рдХрд╛рдп - рдпрд╛ рддреЛ рд╕реАрдзреЗ HTML рдпрд╛ рдбреЗрдЯрд╛ рдХреЛ рд╣реЗрдбрд░ рд╕реЗ рджреЛ рдкрдВрдХреНрддрд┐ рд╡рд┐рд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╣реИ

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ - рдпрд╣ рд╕рд░рд▓ рд╣реИ, рдпрд╣ 1992 рд╕реЗ рдЕрдкрдиреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдиреЗ рдЗрд╕реЗ рдЖрджрд░реНрд╢ рдирд╛рдо рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреНрдпрд╛ рд╣реИ - рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВ - рдПрдХ рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдФрд░ рдпрд╣ рд╣реИ, рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрдм рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕рдВрднрд╡ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд░реНрд╡рд░ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдЕрдиреБрд░реЛрдз рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЖрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рддреНрд░ рдХреЗ рднреАрддрд░ рд╕рдВрд╡рд╛рдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рд╣рд╛рдБ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрдВрддреНрд░ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

  1. рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рдХреГрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рд░реНрд╡рд░ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдХреБрдВрдЬреА - рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ
  2. рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕ рдХреБрдВрдЬреА рдХреЛ рд╕рд╣реЗрдЬрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде, рдпрд╣ рднреЗрдЬрддрд╛ рд╣реИ

рдЗрд╕ рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреБрдХреАрдЬрд╝ рдмрдирд╛рдИ рдЧрдИ рдереАрдВ (рдХреБрдХреАрдЬрд╝, рдХреБрдХреАрдЬрд╝) - рдЖрдкрдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕рд░рд▓ рдкрд╛рда рдлрд╝рд╛рдЗрд▓реЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рд╣реИрдВ рдФрд░ SQLite рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ), рдЬрдмрдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдПрдХ рд╕реАрдорд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХрд╛ рдЖрдХрд╛рд░ (рдЕрдзрд┐рдХрд╛рдВрд╢ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ 4096 рдмрд╛рдЗрдЯреНрд╕ рд╣реИ, 1997 рд╕реЗ RFC 2109 рджреЗрдЦреЗрдВ)
рдпрд╛рдиреА рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдХреБрдХреА рдЪреБрд░рд╛рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреА рдУрд░ рд╕реЗ рдЕрдкрдиреЗ рдлреЗрд╕рдмреБрдХ рдкреЗрдЬ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдЪрд┐рдВрддрд┐рдд рди рд╣реЛрдВ, рдпрд╣ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдлреЗрд╕рдмреБрдХ рдХреЗ рд╕рд╛рде, рдФрд░ рдлрд┐рд░ рдореИрдВ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рдорд▓реЗ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред

рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЕрдиреБрд░реЛрдз-рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреИрд╕реЗ рдмрджрд▓рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╣реИ:

рдкреНрд░рд╛рд░реНрдердирд╛
 POST /login/ HTTP/1.1 Host: example.com Accept: text/html login=Username&password=Userpass 


рд╣рдорд╛рд░реА рд╡рд┐рдзрд┐ POST рдореЗрдВ рдмрджрд▓ рдЧрдИ рд╣реИ, рдФрд░ рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк GET рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рд╣реЛрдЧрд╛, рдЬреЛ рдПрдХ рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдмрд╣реБрдд рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣реА access.log ) рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рдореЗрдВ рдкрд╛рд╕рд╡рд░реНрдб рдХреА рдХреИрд╢рд┐рдВрдЧред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛
 HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Set-Cookie: KEY=VerySecretUniqueKey <html> <head>...</head> <body>...</body> </html> 

рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ Set-Cookie: KEY=VerySecretUniqueKey рд╣реЗрдбрд░ рд╣реЛрдЧрд╛ Set-Cookie: KEY=VerySecretUniqueKey , рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдХреБрдХреАрдЬрд╝ рдореЗрдВ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░реЗрдЧрд╛, рдФрд░ рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рдпрд╣ рд╕рд░реНрд╡рд░ рддрдХ Set-Cookie: KEY=VerySecretUniqueKey , рддреЛ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдФрд░ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рдПрдЧрд╛:

рдкреНрд░рд╛рд░реНрдердирд╛
 GET / HTTP/1.1 Host: example.com Accept: text/html Cookie: KEY=VerySecretUniqueKey < > 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреЗ рдЧрдП рд╣реЗрдбрд░ (рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рд╣реЗрдбрд░реНрд╕) рдФрд░ рд╕рд░реНрд╡рд░ (рд░рд┐рд╕реНрдкрд╛рдВрд╕ рд╣реЗрдбрд░реНрд╕) рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ (рд╕рд╛рдорд╛рдиреНрдп рд╣реЗрдбрд░) рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдо рд╣реИрдВ

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

PHP рдФрд░ рд╕рддреНрд░


рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдкрдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ PHP рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдЬреИрд╕реЗ рдЖрдЧреЗ рдореИрдВ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА

HTTP рд▓реИрдВрдЧреНрд╡реЗрдЬ HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рдереА - рдЕрд░реНрдерд╛рдд рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп HTTP рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХрд╛ рдЙрддреНрддрд░ рджреЗрдирд╛ рдФрд░ рдореЗрдореЛрд░реА рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ "рдорд░" рджреЗрдирд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рддреНрд░ рддрдВрддреНрд░ PHP рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЛрдб рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдиреБрдЕрд▓ рдореЛрдб рдореЗрдВ, рдФрд░ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдХрд┐рд╕ рдХреНрд░рдо рдореЗрдВред
рдпрд╣рд╛рдБ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рд▓реЗрдЦ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ PHP рдорд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ , рдпрд╛ рдпрд╣рд╛рдБ рдпрд╣ рд░реВрд╕реА рдореЗрдВ рд╣реИ , рд▓реЗрдХрд┐рди рдЗрд╕реЗ "рдмрд╛рдж рдХреЗ рд▓рд┐рдП" рдмреБрдХрдорд╛рд░реНрдХ рдореЗрдВ рд░рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рд╕рддреНрд░ рдХреЛ "рд╢реБрд░реВ" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо session_start () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ session.start.php рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ:

 <?php session_start(); 

рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд PHP рд╡реЗрдм рд╕рд░реНрд╡рд░ рдЪрд▓рд╛рдПрдВ:

 php -S 127.0.0.1:8080 

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ (рдпрд╛ рдЬреЛ рднреА ) рдЦреЛрд▓реЗрдВ, рдЙрд╕рдХреЗ рдмрд╛рдж рдкреГрд╖реНрда http://127.0.0.1:8080/session.start.php рдкрд░ рдЬрд╛рдПрдВ - рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдЦрд╛рд▓реА рдкреГрд╖реНрда рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рдордд рдХрд░реЛ - рджреЗрдЦреЛ рд╣реЗрдбрд░ рдХрд┐ рд╕рд░реНрд╡рд░ рдиреЗ рд╣рдореЗрдВ рднреЗрдЬрд╛:

рдХреБрдХреА

рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рд╣реЛрдВрдЧреА, рд╣рдо рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЗрд╕ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ (рдпрджрд┐ рдРрд╕реА рдХреЛрдИ рд░реЗрдЦрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреБрдХреА рдХреЛ рд╕рд╛рдл рдХрд░реЗрдВ, рдФрд░ рдкреГрд╖реНрда рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВ):

 Set-Cookie: PHPSESSID=dap83arr6r3b56e0q7t5i0qf91; path=/ 

рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдкрд░, рдмреНрд░рд╛рдЙрдЬрд╝рд░ `PHPSESSID` рдирд╛рдордХ рдХреБрдХреА рдХреЛ рдмрдЪрд╛рдПрдЧрд╛:

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рддреНрд░ рдХреБрдХреА

PHPSESSID - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рддреНрд░ рдирд╛рдо, рдЗрд╕реЗ php.ini config рд╕реЗ session.name рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдирд╛рдо рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реА рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ session_name () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдФрд░ рдЕрдм - рд╣рдо рдкреГрд╖реНрда рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕ рдХреБрдХреА рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИ, рдЖрдк рдкреГрд╖реНрда рдХреЛ рдПрдХ-рджреЛ рдмрд╛рд░ рддрд╛рдЬрд╝рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд░рд┐рдгрд╛рдо рд╕рдорд╛рди рд╣реЛрдЧрд╛:

рдХреБрдХреА рдХреЗ рд╕рд╛рде рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрдиреБрд░реЛрдз

рдХреБрд▓ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ - рд╕рд┐рджреНрдзрд╛рдВрдд рдЕрднреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдареАрдХ рд╣реИред

рдЕрдЧрд▓рд╛ рдХрджрдо рд╕рддреНрд░ рдореЗрдВ рдПрдХ рдордирдорд╛рдирд╛ рдореВрд▓реНрдп рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реБрдкрд░-рдЧреНрд▓реЛрдмрд▓ рдЪрд░ $_SESSION рдЙрдкрдпреЛрдЧ PHP рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХреЛ рдмрдЪрд╛рдПрдВрдЧреЗ - рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддрд┐рдерд┐ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ:

 session_start(); $_SESSION['time'] = date("H:i:s"); echo $_SESSION['time']; 

рд╣рдо рдкреГрд╖реНрда рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд░реНрд╡рд░ рд╕рдордп рджреЗрдЦрддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ - рдФрд░ рд╕рдордп рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдЗрдП рдЕрдм рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╣рд░ рдкреГрд╖реНрда рддрд╛рдЬрд╝рд╛ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдордп рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ:

 session_start(); if (!isset($_SESSION['time'])) { $_SESSION['time'] = date("H:i:s"); } echo $_SESSION['time']; 

рд╣рдо рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ - рд╕рдордп рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА, рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ PHP рдорд░ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рд╕рддреНрд░ рдХреЛ рдХрд╣реАрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕ рдЬрдЧрд╣ рдХреЛ рдвреВрдВрдвреЗрдВрдЧреЗ ...

рд╕рдм рдХреБрдЫ рдЧреБрдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ


рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, PHP рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рддреНрд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ - session.save_handler рдирд┐рд░реНрджреЗрд╢ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЙрд╕ рдкрде рдХреЛ рджреЗрдЦреЗрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╕рддреНрд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕рд╣реЗрдЬреА рдЬрд╛рддреА рд╣реИрдВред save_path рдирд┐рд░реНрджреЗрд╢, рдпрд╛ рдЖрд╡рд╢реНрдпрдХ рдкрде рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП session_save_path () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЖрдкрдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ рд╕рддреНрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - sys_get_temp_dir () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЫрд┐рдкреА рд╣реБрдИ рдЬрдЧрд╣ рдХрд╣рд╛рдВ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреА рд╕рддреНрд░ рдлрд╝рд╛рдЗрд▓ рдкрд╛рддреЗ рд╣реИрдВ (рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдлрд╝рд╛рдЗрд▓ sess_dap83arr6r3b56e0q7t5i0qf91 ), рдЗрд╕реЗ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЦреЛрд▓реЗрдВ:

 time|s:8:"16:19:51"; 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдБ рдпрд╣ рд╣рдорд╛рд░рд╛ рд╕рдордп рд╣реИ, рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдкреНрд░рд╛рд░реВрдк рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░рд╛ рд╕рддреНрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдордп рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рд╣рдо рдмрд╕ рдХрд┐рд╕реА рднреА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВ рдирд╣реАрдВ:

 time|s:13:"\m/ (@.@) \m/"; 

рдЗрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ session_decode () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд░рд┐рд╡рд░реНрд╕ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП - session_encode () - рдЗрд╕реЗ рдХреНрд░рдорд╛рдВрдХрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП PHP рдореЗрдВ - рдпрд╣ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ - рд╡рд┐рд╢реЗрд╖ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ PHP PHP рдХреНрд░рдорд╛рдВрдХрди - рд╕рддреНрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рд▓рд┐рдЦреЗрдВред .serialize_handler рдорд╛рди php_serialize рдФрд░ рдЖрдк рдЦреБрд╢ рд░рд╣реЗрдВрдЧреЗ, рдФрд░ $_SESSION рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЕрдм рдЖрдк рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ | рдФрд░ ! рдирд╛рдо рдореЗрдВ (рд╕рднреА 10+ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдХрднреА рднреА :) рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛

рдХрд╛рд░реНрдп
рдЕрдкрдирд╛ рдХрд╛рд░реНрдп рд▓рд┐рдЦреЗрдВ рдЬреИрд╕реЗ рдХрд┐ function_decode session_decode() рдлрдВрдХреНрд╢рди рдореЗрдВ, рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рд╕реЗрдЯ рд╣реИ (рдпрд╣ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЬреНрдЮрд╛рди рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ), рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рд╕рддреНрд░ рдХреА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдкрд╛рда рд▓реЗрдВ:

 $_SESSION['integer var'] = 123; $_SESSION['float var'] = 1.23; $_SESSION['octal var'] = 0x123; $_SESSION['string var'] = "Hello world"; $_SESSION['array var'] = array('one', 'two', [1,2,3]); $object = new stdClass(); $object->foo = 'bar'; $object->arr = array('hello', 'world'); $_SESSION['object var'] = $object; $_SESSION['integer again'] = 42; 


рддреЛ рдХреНрдпрд╛ рд╣рдордиреЗ рдЕрднреА рддрдХ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ? рдпрд╣ рд╕рд╣реА рд╣реИ - рдХреБрдХреАрдЬрд╝ рдЪреБрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рдЙрд╕реА рдХреБрдХреАрдЬрд╝ рдХреЛ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА, рдЗрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЪрд▓рд╛рдПрдВ, рдмрд╕ рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдмрджрд▓рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВ:

 javascript:(function(){document.cookie='PHPSESSID=dap83arr6r3b56e0q7t5i0qf91;path=/;';window.location.reload();})() 

рдЕрдм рдЖрдкрдХреЗ рджреЛрдиреЛрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХ рд╣реА рд╕рддреНрд░ рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рдореИрдВрдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ - рд╣рдо рд╕рддреНрд░ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдмрд╛рдВрдзреЗрдВрдЧреЗ, рдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рд░реНрд╡рд░ рдкрд░ рдХреИрд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ - рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдПрдЬреЗрдВрдЯ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВрдЧреЗ рдФрд░ рд╣рд░ рдмрд╛рд░ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ:

 session_start(); if (!isset($_SESSION['time'])) { $_SESSION['ua'] = $_SERVER['HTTP_USER_AGENT']; $_SESSION['time'] = date("H:i:s"); } if ($_SESSION['ua'] != $_SERVER['HTTP_USER_AGENT']) { die('Wrong browser'); } echo $_SESSION['time']; 

рдирдХрд▓реА рдХреЗ рд▓рд┐рдП рдпрд╣ рдФрд░ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рд╕рдВрднрд╡ рд╣реИ, рдпрд╣рд╛рдВ рд╕реЗрд╡рд┐рдВрдЧ рдФрд░ рдЪреЗрдХрд┐рдВрдЧ $_SERVER['REMOTE_ADDR'] рдФрд░ $_SERVER['HTTP_X_FORWARDED_FOR'] рдФрд░ рд╣рдорд╛рд░реЗ рдХреБрдХреАрдЬрд╝ рдкрд░ рдЕрддрд┐рдХреНрд░рдордг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдШреБрд╕рдкреИрдард┐рдпреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдХреА рддрд░рд╣ рдпрд╣ рдХрдореЛрдмреЗрд╢ рджрд┐рдЦреЗрдЧрд╛ред

рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рдХреАрд╡рд░реНрдб рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХреБрдХреАрдЬрд╝ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ HTTPS рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ рдЪрд▓ рд░рд╣реА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рднреА рдЖрдкрдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдпрд╛ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рддрдХ рднреМрддрд┐рдХ рдкрд╣реБрдВрдЪ рдХреЗ рдмрд┐рдирд╛ рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рдЪреБрд░рд╛ рд╕рдХрддрд╛ рд╣реИ


рдпрд╣ session.cookie-httponly рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рддреНрд░ рдХреБрдХреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рджреБрд░реНрдЧрдо рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рд╕реЗрдЯрдХреБрдХреА () рдлрд╝рдВрдХреНрд╢рди рдореИрдиреБрдЕрд▓ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдореАрдЯрд░ HttpOnlyly рдХреЗ рд▓рд┐рдП рднреА рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЗрд╕реЗ рдпрд╛рдж рд░рдЦреЗрдВ - рдпрд╣ рд╕реЗрдЯрд┐рдВрдЧ рдЖрдкрдХреЛ рд▓рдЧрднрдЧ рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ XSS рд╣рдорд▓реЛрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ ред

рдХрд╛рд░реНрдп
рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЖрдИрдкреА рдореЗрдВ рдПрдХ рдЪреЗрдХ рдЬреЛрдбрд╝реЗрдВ; рдпрджрд┐ рдЪреЗрдХ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдордЭреМрддрд╛ рд╕рддреНрд░ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред

рдХрджрдо рд╕реЗ рдХрджрдо


рдФрд░ рдЕрдм рдореИрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рдкреАрдПрдЪрдкреА рдПрдХ рд╕рддреНрд░ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕):

 session_start(); $_SESSION['id'] = 42; 

  1. session_start() рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж session_start() PHP рд╕рддреНрд░-рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╛рдо рд╕реЗ рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдХреА рдЦреЛрдЬрддрд╛ рд╣реИ - рдпрд╣ PHPSESSID
  2. рдпрджрд┐ рдХреЛрдИ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ( session_id () рджреЗрдЦреЗрдВ), рдФрд░ sess_{session_id()} рдирд╛рдо рдХреЗ рд╕рд╛рде path session.save_path рд╕рд╛рде рдПрдХ рдЦрд╛рд▓реА рд╕рддреНрд░ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИ, sess_{session_id()} рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реЗрдбрд░ рдЬреЛрдбрд╝реЗ рдЬрд╛рдПрдВрдЧреЗред {session_name()}={session_id()}
  3. рдпрджрд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдореМрдЬреВрдж рд╣реИ, рддреЛ рд╕рддреНрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рддреНрд░ рдореЗрдВ рджреЗрдЦреЗрдВред session.save_path рдлрд╝реЛрд▓реНрдбрд░:
    • рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ - рд╣рдо sess_{$_COOKIE[session_name()]} рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ (рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдореЗрдВ az , AZ , 0-9 , рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдФрд░ рдЛрдг рдЪрд┐рд╣реНрди рд╕реЗ рдХреЗрд╡рд▓ рд╡рд░реНрдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)
    • рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝реЗрдВ, рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдЕрдирдкреИрдХ рдХрд░реЗрдВ (рд╕реБрдкрд░-рдЧреНрд▓реЛрдмрд▓ рдЪрд░ $_SESSION (рджреЗрдЦреЗрдВ ) ) (рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рдиреЗ / рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдж рд╣реИ)
  4. рдЬрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдЕрдкрдирд╛ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рддрдм $_SESSION рд╕рд╛рд░рд╛ рдбреЗрдЯрд╛ sess_{session_id()} рдкрде session.save_path рд╕рд╛рде рдлрд╛рдЗрд▓ рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред sess_{session_id()} рдирд╛рдо sess_{session_id()} (рд▓реЙрдХ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)

рдХрд╛рд░реНрдп
PHPSESSID рдирд╛рдо рд╕реЗ рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рдордирдорд╛рдирд╛ рдХреБрдХреА рдорд╛рди рд╕реЗрдЯ рдХрд░реЗрдВ, рдЗрд╕реЗ 1234567890 рд╣реЛрдиреЗ рджреЗрдВ, рдкреГрд╖реНрда рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░реЗрдВ, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ sess_1234567890 рдмрдирд╛рдИ рд╣реИ

рдХреНрдпрд╛ рдХреБрдХреАрдЬрд╝ рдХреЗ рдмрд┐рдирд╛ рдЬреАрд╡рди рд╣реИ?


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


рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рд╕рддреНрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?


рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рд╕рддреНрд░ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рддреНрд░ рд╕реНрдЯреЛрд░ рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ PHP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП, рд╕рддреНрд░рд╣реИрдВрдбрд▓рд░рдЗрдВрдЯрд░рдлреЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рд╕реЗрд╢рди_рд╕реЗрдЯ_рд╕реЗрд╡реЗ_рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдП рдЧрдП рд╣реИрдВред
рдЕрд▓рдЧ-рдЕрд▓рдЧ, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЛ рд░реЗрдбрд┐рд╕ рдФрд░ рдореЗрдореНрдЪреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рддреНрд░ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдЬрдм рдЖрдк рдЗрди рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВрдбрд▓рд░ рднреА рдЙрдирдХреЗ рд╕рд╛рде рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП RTFM рд╕рдм рдХреБрдЫ рд╣реИред рдЦреИрд░ рдФрд░ рд╣рд╛рдВ, рд╣реИрдВрдбрд▓рд░ рдХреЛ session_start() ;

рдХрд╛рд░реНрдп
MySQL рдореЗрдВ SessionHandlerInterface рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SessionHandlerInterface рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдо рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВред


рд╕рддреНрд░ рдХрдм рдорд░рддрд╛ рд╣реИ?


рд╕рддреНрд░ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рд▓рд┐рдП рд╕реЗрд╢рдиред Gc_maxlifetime рдирд┐рд░реНрджреЗрд╢ рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдирд┐рд░реНрджреЗрд╢ 1440 рд╕реЗрдХрдВрдб (24 рдорд┐рдирдЯ) рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдЗрд╕реЗ рд╕рдордЭрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдпрджрд┐ рдХрд┐рд╕реА рд╕рддреНрд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рддрдХ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕рддреНрд░ рдХреЛ "рд╕рдбрд╝рд╛ рд╣реБрдЖ" рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдмрд╛рд░реА рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдкрд░рд┐рдкрдХреНрд╡ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ - рдкреАрдПрдЪрдкреА рдХрдм рд╕рдорд╛рдкреНрдд рд╣реЛ рдЪреБрдХреА рд╕рддреНрд░реЛрдВ рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ? рдЙрддреНрддрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЧрд╛рдЗрдб рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ - рддреЛ рдпрд╛рдж рд░рдЦреЗрдВ:

рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рддрдм рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм session_start() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рджреЛ рдирд┐рд░реНрджреЗрд╢рди рд╕рддреНрд░реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред gc_probability рдФрд░ session.gc_divisor , рдкрд╣рд▓рд╛ рд▓рд╛рднрд╛рдВрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рднрд╛рдЬрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпреЗ рдорд╛рди 1 рдФрд░ 100, рдЖрджрд┐ рд╣реЛрддреЗ рд╣реИрдВред рдИред рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХрд▓реЗрдХреНрдЯрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рддреНрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рд▓рдЧрднрдЧ 1% рд╣реИред

рдХрд╛рд░реНрдп
рд╕реЗрд╢рди рдХрд╛ рдорд╛рди рдмрджрд▓реЗрдВред session.gc_divisor рдирд┐рд░реНрджреЗрд╢ рддрд╛рдХрд┐ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рд╣рд░ рдмрд╛рд░ рд╢реБрд░реВ рд╣реЛ, рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИред


рд╕рдмрд╕реЗ рддреБрдЪреНрдЫ рднреВрд▓


Google рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдЖрдзрд╛ рдорд┐рд▓рд┐рдпрди рд╕реЗ рдЕрдзрд┐рдХ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐:

рд╕рддреНрд░ рдХреБрдХреА рдирд╣реАрдВ рднреЗрдЬ рд╕рдХрддреЗ - рд╣реЗрдбрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднреЗрдЬреЗ рдЧрдП
рдкрд╣рд▓реЗ рд╕реЗ рднреЗрдЬреЗ рдЧрдП рд╕рддреНрд░ рдХреИрд╢ рд▓рд┐рдорд┐рдЯрд░ - рд╣реЗрдбрд░ рдирд╣реАрдВ рднреЗрдЬ рд╕рдХрддреЗ

рдПрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ session.error.php рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ:

 echo str_pad(' ', ini_get('output_buffering')); session_start(); 

рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рдПрдХ рдЕрдЬреАрдм "рдЬрд╛рджреВ" рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рдмрдлрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдлреЛрдХрд╕ рд╣реИ, рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рдЕрдм рддрдХ рдЗрд╕реЗ рдХреЗрд╡рд▓ 4096 рдЕрдХреНрд╖рд░реЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╕рднреА рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╣реИ

рдХреБрдХреА рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣рдЯрд╛рдиреЗ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рдЖрдкрдХреЛ рдЙрдкрд░реЛрдХреНрдд рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реЗрдВрдЧреА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рддреНрд░реБрдЯрд┐ рдкрд╛рда рдЕрд▓рдЧ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рд░ рдПрдХ рд╣реА рд╣реИ: рдЯреНрд░реЗрди рдиреЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ - рд╕рд░реНрд╡рд░ рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдкреГрд╖реНрда рд╕рд╛рдордЧреНрд░реА рдкрд╣рд▓реЗ рд╣реА рднреЗрдЬ рджреА рд╣реИ рдФрд░ рд╣реЗрдбрд░ рднреЗрдЬрдиреЗ рдореЗрдВ рдмрд╣реБрдд рджреЗрд░ рд╣реЛ рдЪреБрдХреА рд╣реИ, рдпрд╣ рдХреБрдХреАрдЬрд╝ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░ рдкреЛрд╖рд┐рдд рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреБрдХреАрдЬрд╝ рдореЗрдВ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдП рд╣реИрдВ - рдПрдХ рдРрд╕реА рдЬрдЧрд╣ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдкрд╛рда рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд░реНрдгреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ <?php , рдпрд╛ рдЙрд╕рдХреЗ рдмрд╛рдж ?> рдХрдиреЗрдХреНрдЯ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ, рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдЕрдЧрд░ рдпрд╣ рдПрдХ рд╕реНрдерд╛рди рд╣реИ, рддреЛ рдХреБрдЫ рдереНрд░реЗрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ? BOM рдХреА рддрд░рд╣, рдЗрд╕рд▓рд┐рдП рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ, рдФрд░ рдпрд╣ рд╕рдВрдХреНрд░рдордг рдЖрдкрдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рдЖрдЦрд┐рд░рдХрд╛рд░ ... рд╣реЛрдорд░рд┐рдХ рд╣рдБрд╕реА)ред

рдХрд╛рд░реНрдп
рдЗрд╕ рдЬреНрдЮрд╛рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рддреНрд░ рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдФрд░ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХрд╛рд░реНрдп рдХрд░реЗрдВ:

 require_once 'include/sess.php'; sess_start(); if (isset($_SESS["id"])) { echo $_SESS["id"]; } else { $_SESS["id"] = 42; } 

рдЕрдкрдиреА рдпреЛрдЬрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ register_shutdown_function () рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА



рддрд╛рд▓рд╛


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

рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдлрд┐рд░ рд╕реЗ рдХрджрдо рдЙрдард╛рдПрдВ:

  1. session_start() рди рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ / рдкрдврд╝рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рд▓реЙрдХ рднреА рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреЛрдИ рднреА рдЙрд╕ рдкрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рди рдХрд░ рд╕рдХреЗ рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реБрдИ рд╣реИ, рдпрд╛ рд╕рддреНрд░ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЧреИрд░-рд╕реБрд╕рдВрдЧрдд рдбреЗрдЯрд╛ рдкрдврд╝рд╛ рд╣реИред
  2. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓реЙрдХ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ


рдЗрд╕ рддреНрд░реБрдЯрд┐ рдореЗрдВ "рдЪрд┐рдкрдХреЗ рд░рд╣рдирд╛" рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рджреЛ рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдВ:

 // start.php session_start(); echo "OK"; 


 // lock.php session_start(); sleep(10); echo "OK"; 


рдЕрдм, рдпрджрд┐ рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ lock.php рдкреЗрдЬ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ start.php рдХреЛ рдПрдХ рдирдП рдЯреИрдм рдореЗрдВ рдЦреЛрд▓реЗрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдкрд╣рд▓рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рджреВрд╕рд░рд╛ рдкреЗрдЬ рдЦреБрд▓реЗрдЧрд╛, рдЬреЛ рд╕рддреНрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ 10 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдХрд░рддрд╛ рд╣реИред

рдРрд╕реА рдШрдЯрдирд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ - "рдЕрдирд╛рдбрд╝реА" рдФрд░ "рд╡рд┐рдЪрд╛рд░рд╢реАрд▓"ред

"рдЕрдирд╛рдбрд╝реА"
рдПрдХ рдХрд╕реНрдЯрдо рд╕рддреНрд░ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рд▓реЙрдХрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рднреВрд▓рдирд╛" :)
рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рдПрдХ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рд▓реЗрдирд╛ рд╣реИ рдФрд░ рд▓реЙрдХ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрдордХрд╛рдЯреЗрдб рдХреЗ рдкрд╛рд╕ рдРрд╕рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ - memcached.sess_locking ) O_o
рдПрдХ рджреБрд░реНрд▓рдн рдкреЙрдк-рдЕрдк рддреНрд░реБрдЯрд┐ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛрдб рдЦрд░реНрдЪ рдХрд░реЗрдВ ...

"рд╡рд┐рдЪрд╛рд░рд╢реАрд▓"
рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХрд╣рд╛рдВ рд╣реИ - рд╕рддреНрд░ рд▓реЙрдХ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЬрдм рдЖрд╡рд╢реНрдпрдХ рди рд╣реЛ рддреЛ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВ:

- рдпрджрд┐ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рд╕рддреНрд░ рдбреЗрдЯрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рддреНрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп read_and_close рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 session_start([ 'read_and_close' => true ]); 


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рддреНрд░ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд▓реЙрдХ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

- рдпрджрд┐ рдЖрдкрдХреЛ рдЕрднреА рднреА рд╕рддреНрд░ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╕реЗ рд╕рддреНрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:

 session_start(); // some changes session_write_close(); 


рдХрд╛рд░реНрдп
рджреЛ start.php рдФрд░ lock.php рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдереАред рдЕрдзрд┐рдХ read-close.php рдФрд░ write-close.php , рдЬрд┐рд╕рдореЗрдВ рдЖрдк рд╕реВрдЪреАрдмрджреНрдз рддрд░реАрдХреЛрдВ рд╕реЗ рд▓реЙрдХрд┐рдВрдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд▓реЙрдХ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдпрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред


рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ


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

PS рдпрджрд┐ рдЖрдкрдиреЗ рд▓реЗрдЦ рд╕реЗ рдХреБрдЫ рдирдпрд╛ рд╕реАрдЦрд╛ - рд▓реЗрдЦрдХ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж - рд▓реЗрдЦ рдХреЛ рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ;)
PPS рд╣рд╛рдБ, рдпрд╣ рдореЗрд░реЗ рдмреНрд▓реЙрдЧ рдХрд╛ рдПрдХ рдХреНрд░реЙрд╕-рдкреЛрд╕реНрдЯ рд▓реЗрдЦ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ :)

рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ "рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП PHP":

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


All Articles