рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣рдг

рдЫрд╡рд┐

рдЕрдЪреНрдЫрд╛ рд╕реНрд╡рд╛рд╕реНрдереНрдп, рд╣реЙрдХрд░реНрд╕! рдПрдХ рдбреЗрдЯрд┐рдВрдЧ рд╕рд╛рдЗрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝реЛрдЯреЛ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЧрдпрд╛ред рд╕рдВрджрд░реНрдн рдХреА рд╢рд░реНрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкреНрд░рддрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝реЛрдЯреЛ рдХреА рд╕рдВрдЦреНрдпрд╛ 10 рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рд╕реАрдорд┐рдд рд╣реИред рд▓реЗрдХрд┐рди рджрд╕рд┐рдпреЛрдВ рд╣рдЬрд╝рд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрд╡рд░реВрдк рдореЗрдВ "рд╢реВрдиреНрдп" рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрдж рд╣реИред рдпрд╣реА рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдЬрд╛рд░реЛрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВред рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрдЪреНрдЪреЗ рдХреЗ рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдЕрдиреБрднрд╡ рд╕реЗ, рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореВрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ 1000-1500 рдлрд╝рд╛рдЗрд▓реЛрдВ / рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЗ рдмрд╛рдж рд╕рдорд╕реНрдпрд╛рдПрдВ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВред

рдЕрд╕реНрд╡реАрдХрд░рдгред рдореИрдВрдиреЗ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЧреБрдЧрд▓реА рдХреА рдФрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рддрд╣рдд рдореБрджреНрджреЗ рдХреЗ рдХрдИ рд╕рдорд╛рдзрд╛рди рдкрд╛рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ рдпрд╛ рдпрд╣рд╛рдБ )ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рднреА рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░рд╛ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реЛред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдХреЗрд╡рд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВред

рд╕рд┐рджреНрдзрд╛рдВрдд


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

рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╡рд┐рд╖рдпрд╛рдВрддрд░ред рдСрдЯреЛ-рдЗрдВрдХреНрд░реАрдореЗрдВрдЯ рдХреА рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдбреЗрдЯрд┐рдВрдЧ рд╕рд╛рдЗрдЯ рдореЗрдВ рдПрдХ рджрд░реНрдЬрди рдпрд╛ рджреЛ рд╣рдЬрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдо рддреМрд░ рдкрд░ рдЕрдкрдиреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдкреВрд░реЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд┐рдВрдЧ-рдЖрд░рдпреВ рдХреЗ рд╕рдХреНрд░рд┐рдп рджрд░реНрд╢рдХ рдХрдИ рд╕реМ рд╣рдЬрд╛рд░ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд┐рд░реНрдл рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рджреМрд░рд╛рди рдХрд┐рддрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢реЗрд╖ рд╣реИрдВ; рдХрд┐рддрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдм рддрдХ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИрдВред рдЕрдм рд╣рдорд╛рд░реЗ рдХрд╛рдиреВрди рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рд╣рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдЫрд╣ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рддрд╛ рд╣реИ ... рдЬрд▓реНрдж рд╣реА рдпрд╛ рдмрд╛рдж рдореЗрдВ, 4 рдХреЗ рд╕рд╛рде UNSIGNED INT рдХрд╛ рдПрдХ рдкреИрд╕рд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, BIGINT рдХреЛ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рд▓реЗрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред

рдЕрдм рдЖрдЗрдП рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ BIGINT рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред рдпрд╣ 8 рдмрд╛рдЗрдЯреНрд╕ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЗрдЯ 0 рд╕реЗ 255 рддрдХ рд╣реИред 255 рдмрдЪреНрдЪреЗ рдиреЛрдбреНрд╕ рдХрд┐рд╕реА рднреА рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВред рдпрд╣реА рд╣реИ, рд╣рдо рдлрд╝рд╛рдЗрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВ, рд╣рдо рдЗрд╕реЗ рджреЛ рд╡рд░реНрдгреЛрдВ рдХреЗ рд╡рд┐рдЦрдВрдбрди рдореЗрдВ рддреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рд╣рдо рдЗрди рдЪрдВрдХреНрд╕ рдХреЛ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдмрд╛рдж рдореЗрдВ рднреМрддрд┐рдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВред рд▓рд╛рдн!

0f/65/84/10/67/68/19/ff.file

рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдФрд░ рд╕рд░рд▓ред рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдпрд╣рд╛рдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рд╡реИрд╕реЗ рднреА, рдлрд╝рд╛рдЗрд▓ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рджреА рдЬрд╛рдПрдЧреА рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ MIME рдкреНрд░рдХрд╛рд░ рджреЗрдЧреА, рдЬрд┐рд╕реЗ рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЖрдкрдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХрд╣рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рд╣реИ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрде / /content/files/0f/65/84/10/67/68/19/ff.file рд╕рд╛рде рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдерд┐рдд рд╣реИред рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ URL рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, /content/users/678/files/somefile ред рдПрд╕рдИрдУ рд╢рд╛рдпрдж рдЕрднреА рдмрд╣реБрдд рдореБрд╕реНрдХреБрд░рд╛рдП рд╣реИрдВред рдпрд╣ рд╕рдм рд╣рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдлрд╛рдЗрд▓ рдХреЛ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рдХрд╣рд╛рдВ рд░рдЦрд╛ рдЬрд╛рдПред

рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛


рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, MIME рдкреНрд░рдХрд╛рд░, URL рдФрд░ рднреМрддрд┐рдХ рд╕реНрдерд╛рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╕рдорд╛рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ md5 рдФрд░ sha1 рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗред рдмреЗрд╢рдХ, рд╣рдореЗрдВ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЗрдХрд╛рдИ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдЬрд┐рд╕рдореЗрдВ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред рдФрд░ рдЕрдЧрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрд╣реБрдд рдмрдбрд╝реА рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрд╕реА рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╣рдо рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдорд╛рд▓ рдХреА рддрд╕реНрд╡реАрд░реЗрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЙрд╕ рдЗрдХрд╛рдИ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдХреЛ рднреА рд╕рдВрдЪрд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬрд┐рд╕рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рд╣реИред

рдкрдХреНрд╖рд┐рдпреЛрдВ рдХреА рдмреЛрд▓реАред рдпрджрд┐ рдЖрдк рдмрд╛рд╣рд░реА рдкрд╣реБрдБрдЪ рдХреЗ рд▓рд┐рдП .htaccess рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлрд╝рд╛рдЗрд▓ рдХреЗрд╡рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рддрдХ рдкрд╣реБрдВрдЪ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП, рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдБ рдХрд┐ рдореЗрд░реЗ CMS рдореЗрдВ (рдЬрд╣рд╛рдБ рдЕрдм рдЙрдХреНрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рджреЗрдЦрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ) рдкрд╣реБрдВрдЪ рдореВрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣реЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдореЗрд░реЗ рдкрд╛рд╕ 8 рд╣реИрдВ - рдЕрддрд┐рдерд┐, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдкреНрд░рдмрдВрдзрдХ, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ, рдирд┐рд╖реНрдХреНрд░рд┐рдп, рдЕрд╡рд░реБрджреНрдз, рд╣рдЯрд╛рдП рдЧрдП рдФрд░ рд╕реБрдкрд░ рдкреНрд░рд╡реЗрд╢ред рд╕реБрдкрд░-рдПрдбрдорд┐рди рдмрд┐рд▓реНрдХреБрд▓ рд╕рдм рдХреБрдЫ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкрд╣реБрдВрдЪ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓реЗрддрд╛ рд╣реИред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рд╕реБрдкрд░-рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдзреНрд╡рдЬ рд╣реИ, рддреЛ рд╡рд╣ рд╕реБрдкрд░-рдПрдбрдорд┐рди рд╣реИред рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рдпрд╣реА рд╣реИ, рд╣рдо рд╢реЗрд╖ рд╕рд╛рдд рд╕рдореВрд╣реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░реЗрдВрдЧреЗред рдкреНрд░рд╡реЗрд╢ рд╕рд░рд▓ рд╣реИ - рдпрд╛ рддреЛ рдлрд╝рд╛рдЗрд▓ рджреЗрдВ рдпрд╛ рди рджреЗрдВред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдЖрдк TINYINT рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред

рдФрд░ рдПрдХ рдмрд╛рддред рд╣рдорд╛рд░реЗ рдХрд╛рдиреВрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдореЗрдВ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╕реНрдЯрдо рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣реА рд╣реИ, рд╣рдореЗрдВ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐рд╕реА рддрд░рд╣ рд╣рдЯрд╛рдП рдЧрдП рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд┐рдЯ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдореИрдВ рдЖрдорддреМрд░ рдкрд░ INT рдХреЗ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЖрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдирд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдВрдд рд╕реЗ 5 рд╡реЗрдВ рдмрд┐рдЯ рдореЗрдВ DELETED рдзреНрд╡рдЬ рд░рдЦрдиреЗ рдХреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рдкрд░рдВрдкрд░рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдлрд┐рд░ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрд╛рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИ:

 create table `files` ( `id` bigint not null auto_increment, --   `entity_type` char(32) not null default '', --   `entity` bigint null, -- ID  `mime` char(32) not null default '', -- MIME- `md5` char(32) not null default '', -- MD5 `sha1` char(40) not null default '', -- SHA1 `file` char(64) not null default '', --   `url` varchar(250) not null default '', -- URL `meta` text null, -- -   JSON    `size` bigint not null default '0', --  `created` datetime not null, --   `updated` datetime null, --   `access` tinyint not null default '0', --   `flags` int not null default '0', --  primary key (`id`), index (`entity_type`), index (`entity`), index (`mime`), index (`md5`), index (`sha1`), index (`url`) ) engine = InnoDB; 

рдбрд┐рд╕реНрдкреИрдЪрд░ рдХреНрд▓рд╛рд╕


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

рдЖрдИрдбреА - рдлрд╝рд╛рдЗрд▓ рдХреЗ рднреМрддрд┐рдХ рд╕реНрдерд╛рди рд╕реЗ рдмрд╣рд╛рд▓
Unit_type - рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛
рдЗрдХрд╛рдИ - рдмрд╣рд╛рд▓ рдирд╣реАрдВ
рдорд╛рдЗрдо - рдлрд┐рдиреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╣рд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛
md5 - рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╣реА рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
sha1 - рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╣реА рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛
рдлрд╝рд╛рдЗрд▓ - рдлрд╝рд╛рдЗрд▓ рдХреЗ рднреМрддрд┐рдХ рд╕реНрдерд╛рди рд╕реЗ рдмрд╣рд╛рд▓
url - рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛
рдореЗрдЯрд╛ - рдмрд╣рд╛рд▓ рдирд╣реАрдВ рд╣реИ
рдЖрдХрд╛рд░ - рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╣реА рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛
рдмрдирд╛рдпрд╛ - рдЖрдк рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ
рдЕрджреНрдпрддрди - рдЖрдк рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ
рдкрд╣реБрдВрдЪ - рдмрд╣рд╛рд▓ рдирд╣реАрдВ
рдЭрдВрдбреЗ - рдмрд╣рд╛рд▓ рдирд╣реАрдВ

рдЖрдк рдореЗрдЯрд╛ рд╕реВрдЪрдирд╛ рдХреЛ рддреБрд░рдВрдд рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдХрд╛рдордХрд╛рдЬ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдФрд░ рддреЗрдЬреА рд╕реЗ рд╡рд╕реВрд▓реА рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрднреА рднреА MIME рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреБрд▓: рдЗрдХрд╛рдИ рдкреНрд░рдХрд╛рд░, рдЗрдХрд╛рдИ рдЖрдИрдбреА, MIME, URL, рдкрд╣реБрдВрдЪ рдФрд░ рдЭрдВрдбреЗред рд╕рд┐рд╕реНрдЯрдо рдХреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЧрдВрддрд╡реНрдп рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рдмреИрдХрдЕрдк рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗред

рдХрдХреНрд╖рд╛ рдХреЛрдб
 <?php class BigFiles { const FLAG_DELETED = 0x08000000; //    "" /** @var mysqli $_db */ protected $_db = null; protected $_webRoot = ''; protected $_realRoot = ''; function __construct(mysqli $db = null) { $this->_db = $db; } /** * /   URL- * @param string $v  * @return string */ public function webRoot($v = null) { if (!is_null($v)) { $this->_webRoot = $v; } return $this->_webRoot; } /** * /    * @param string $v  * @return string */ public function realRoot($v = null) { if (!is_null($v)) { $this->_realRoot = $v; } return $this->_realRoot; } /** *   * @param array $data   * @param string $url URL   * @param string $eType   * @param int $eID ID  * @param mixed $meta - * @param int $access  * @param int $flags  * @param int $fileID ID   * @return bool * @throws Exception */ public function upload(array $data, $url, $eType = '', $eID = null, $meta = null, $access = 127, $flags = 0, $fileID = 0) { $meta = is_array($meta) ? serialize($meta) : $meta; if (empty($data['tmp_name']) || empty($data['name'])) { $fid = intval($fileID); if (empty($fid)) { return false; } $meta = empty($meta) ? 'null' : "'" . $this->_db->real_escape_string($meta) . "'"; $q = "`meta`={$meta},`updated`=now()"; $this->_db->query("UPDATE `files` SET {$q} WHERE (`id` = {$fid}) AND (`entity_type` = '{$eType}')"); return $fid; } // File data $meta = empty($meta) ? 'null' : "'" . $this->_db->real_escape_string($meta) . "'"; $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo , $data['tmp_name']); finfo_close($finfo); // FID, file name if (empty($fileID)) { $eID = empty($eID) ? 'null' : intval($eID); $q = <<<sql insert into `files` set `mime` = '{$mime}', `entity` = {$eID}, `entityType` = '{$eType}', `created` = now(), `access` = {$access}, `flags` = {$flags} sql; $this->_db->query($q); $fid = $this->_db->insert_id; list($ffs, $fhn) = self::fid($fid); $url = $this->_webRoot . $url . '/' . $fid; $fdir = $this->_realRoot . $ffs; self::validateDir($fdir); $index = self::getIndex($fdir); $index[$fhn] = array($fhn, $mime, $url, ($eID == 'null' ? 0 : $eID), $access, $flags); self::setIndex($fdir, $index); $fname = $ffs . '/' . $fhn . '.file'; } else { $fid = intval($fileID); $fname = $this->fileName($fid); } // Move file $fdir = $this->_realRoot . $fname; if (!move_uploaded_file($data['tmp_name'], $fdir)) { throw new Exception('Upload error'); } $q = '`md5`=\'' . md5_file($fdir) . '\',`sha1`=\'' . sha1_file($fdir) . '\',' . '`size`=' . filesize($fdir) . ',`meta`=' . $meta . ',' . (empty($fileID) ? "`url`='{$url}',`file`='{$fname}'" : '`updated`=now()'); $this->_db->query("UPDATE `files` SET {$q} WHERE (`id` = {$fid}) AND (`entity_type` = '{$eType}')"); return $fid; } /** *   * @param string $url URL * @param string $basicGroup    * @throws Exception */ public function read($url, $basicGroup = 'anonimous') { if (!ctype_alnum(str_replace(array('/', '.', '-', '_'), '', $url))) { header('HTTP/1.1 400 Bad Request'); exit; } $url = $this->_db->real_escape_string($url); $q = "SELECT * FROM `files` WHERE `url` = '{$url}' ORDER BY `created` ASC"; if ($result = $this->_db->query($q)) { $vars = array(); $ints = array('id', 'entity', 'size', 'access', 'flags'); while ($row = $result->fetch_assoc()) { foreach ($ints as $i) { $row[$i] = intval($row[$i]); } $fid = $row['id']; $vars[$fid] = $row; } if (empty($vars)) { header('HTTP/1.1 404 Not Found'); exit; } $deleted = false; $access = true; $found = ''; $mime = ''; foreach ($vars as $fdata) { $flags = intval($fdata['flags']); $deleted = ($flags & self::FLAG_DELETED) != 0; $access = self::granted($basicGroup, $fdata['access']); if (!$access || $deleted) { continue; } $found = $fdata['file']; $mime = $fdata['mime']; } if (empty($found)) { if ($deleted) { header('HTTP/1.1 410 Gone'); exit; } elseif (!$access) { header('HTTP/1.1 403 Forbidden'); exit; } } else { header('Content-type: ' . $mime . '; charset=utf-8'); readfile($this->_realRoot . $found); exit; } } header('HTTP/1.1 404 Not Found'); exit; } /** *   ()   * @param mixed $fid () * @return bool * @throws Exception */ public function delete($fid) { $fid = is_array($fid) ? implode(',', $fid) : $fid; $q = "delete from `table` where `id` in ({$fid})"; $this->_db->query($q); $result = true; foreach ($fid as $fid_i) { list($ffs, $fhn) = self::fid($fid_i); $fdir = $this->_realRoot . $ffs; $index = self::getIndex($fdir); unset($index[$fhn]); self::setIndex($fdir, $index); $result &= unlink($fdir . '/'. $fhn . '.file'); } return $result; } /** *  ()  "" * @param int $fid () * @param bool $value   * @return bool */ public function setDeleted($fid, $value=true) { $fid = is_array($fid) ? implode(',', $fid) : $fid; $o = $value ? ' | ' . self::FLAG_DELETED : ' & ' . (~self::FLAG_DELETED); $this->_db->query("update `files` set `flags` = `flags` {$o} where `id` in ({$fid})"); return true; } /** *   * @param int $fid  * @return string * @throws Exception */ public function fileName($fid) { list($ffs, $fhn) = self::fid($fid); self::validateDir($this->_realRoot . $ffs); return $ffs . '/' . $fhn . '.file'; } /** *   . *           . * @param int $fid   * @return array */ public static function fid($fid) { $ffs = str_split(str_pad(dechex($fid), 16, '0', STR_PAD_LEFT), 2); $fhn = array_pop($ffs); $ffs = implode('/', $ffs); return array($ffs, $fhn); } /** *    * @param string $f     * @return bool * @throws Exception */ public static function validateDir($f) { if (!is_dir($f)) { if (!mkdir($f, 0700, true)) { throw new Exception('cannot make dir: ' . $f); } } return true; } /** *    * @param string $f       * @return array */ public static function getIndex($f) { $index = array(); if (file_exists($f . '/.index')) { $_ = file($f . '/.index'); foreach ($_ as $_i) { $row = trim($_i); $row = explode('|', $row); array_walk($row, 'trim'); $rid = $row[0]; $index[$rid] = $row; } } return $index; } /** *    * @param string $f       * @param array $index    * @return bool */ public static function setIndex($f, array $index) { $_ = array(); foreach ($index as $row) { $_[] = implode('|', $row); } return file_put_contents($f . '/.index', implode("\r\n", $_)); } /** *   * @param string $group   (. ) * @param int $value   * @return bool */ public static function granted($group, $value=0) { $groups = array('anonimous', 'user', 'manager', 'admin', 'inactive', 'blocked', 'deleted'); if ($group == 'root') { return true; } foreach ($groups as $groupID => $groupName) { if ($groupName == $group) { return (((1 << $groupID) & $value) != 0); } } return false; } } 


рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

- realRoot - рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдкреВрд░рд╛ рдкрде рдПрдХ рд╕реНрд▓реИрд╢ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
- рд╡реЗрдмрд░реВрдЯ - рдПрдХ рдкреНрд░рдореБрдЦ рд╕реНрд▓реИрд╢ рдХреЗ рдмрд┐рдирд╛ рд╕рд╛рдЗрдЯ рдХреА рдЬрдбрд╝ рд╕реЗ рдкрде (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ рдХреНрдпреЛрдВ)ред
- DBMS рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ MySQLi рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
- рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, $ _FILES рд╕рд░рдгреА рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдЕрдкрд▓реЛрдб рд╡рд┐рдзрд┐ рдХреЗ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред
- рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрдИрдбреА рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ tmp_name рдореЗрдВ рдЗрдирдкреБрдЯ рд╕рд░рдгреА рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИред
- рдЖрдк рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХрдИ рдмрд╛рд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдЭрдВрдбреЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдпрд╛ рддреЛ рдПрдХ рд╕рд░рдгреА рдкрд╛рд╕ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдЙрдирдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдорд╛рд░реНрдЧ


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕рд╛рдЗрдЯ рдХреЗ рд░реВрдЯ рдореЗрдВ htaccess рдХреА рдХреБрдЫ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ (рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ mod_rewrite рд╕рдХреНрд╖рдо рд╣реИ):

 RewriteCond %{REQUEST_URI} ^/content/(.*)$ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+)$ content/index.php?file=$1 [L,QSA] 

"рд╕рд╛рдордЧреНрд░реА" рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд╛рдЗрдЯ рдХреА рдЬрдбрд╝ рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░ рд╣реИред рдмреЗрд╢рдХ рдЖрдк рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЕрд▓рдЧ рдирд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд╣реА index.php, рд╕рд╛рдордЧреНрд░реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд:

 <?php $dbHost = '127.0.0.1'; $dbUser = 'user'; $dbPass = '****'; $dbName = 'database'; try { if (empty($_REQUEST['file'])) { header('HTTP/1.1 400 Bad Request'); exit; } $userG = 'anonimous'; //      ;      $files = new BigFiles(new mysqli($dbHost,$dbUser,$dbPass,$dbName)); $files->realRoot(dirname(__FILE__).'/files/'); $files->read($_REQUEST['file'],$userG); } catch (Exception $e) { header('HTTP/1.1 500 Internal Error'); header('Content-Type: text/plain; charset=utf-8'); echo $e->getMessage(); exit; } 

рдЦреИрд░, рдЕрдкрдиреЗ рдЖрдк рд╣реА, рд╣рдо рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрд╛рд╣рд░реА рдПрдХреНрд╕реЗрд╕ рд╕реЗ рд╣реА рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд╕рд╛рде content/files рдлрд╝реЛрд▓реНрдбрд░ content/files рдЬрдбрд╝ рдореЗрдВ .htaccess рдлрд╝рд╛рдЗрд▓ рд░рдЦреЗрдВ:

 Deny from all 

рдкрд░рд┐рдгрд╛рдо


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

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


All Articles