рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ рд╣реИрдмреЗ рдкрд░ рдПрдХ рдмреНрд▓реЙрдЧ рд╢реБрд░реВ рдХрд┐рдпрд╛ - рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ, рд╕рд╡рд╛рд▓ рдкреВрдЫреЗрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИред
рдирдИ core.php!
рдкреНрд░реА-рдмреАрдЯрд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рдирдпрд╛ core.php рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк рд╣реИ! рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрджрд▓рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдкреВрд░рд╛ рд╡рд┐рд╡рд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИред
рд╡реИрд╕реЗ, database.php рдореЗрдВ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ
'рдПрдиреНрдХреЛрдбрд┐рдВрдЧ' => 'utf8'
рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ AppModel рдпрд╛ mysql.php рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЯреНрд░рд┐рдХ рдирд╣реАрдВ рд╣реИ;)
рд╕реНрд╡рдЪреНрдЫрддрд╛-> рд╕реНрд╡рдЪреНрдЫ
рдЕрдВрдд рдореЗрдВ, Sanitize - рд╕реНрд╡рдЪреНрдЫ рд╡рд┐рдзрд┐ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рдпрд╛ рдЧрдпрд╛ред рдкрд╣рд▓реЗ, рдпрд╣ рдЧреИрд░-рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рдерд╛ рдФрд░ рдПрд░реЗ рдореЗрдВ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдЯ рджрд┐рдпрд╛ред рдЕрдм рд╡рд┐рдзрд┐ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВред рд╕рдЪ рд╣реИ, рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдСрдб-рдкреНрд░реА-рдмреАрдЯрд╛ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рдЦрд░рд╛рдмреА рдХреЗ рдХрд╛рд░рдг рд╡рд┐рд╖рдо_ рд╕реНрдерд╛рди рдлрд┐рд▓реНрдЯрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдФрд░ рдЯрд┐рдХрдЯ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рдереА;)
рдЗрд╕рд▓рд┐рдП, рдЕрдм рдХрдЪрд░реЗ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд▓реНрдЯрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ('sanitize');
$ рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝ = рдирдпрд╛ рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝ ();
$ рд╡рд┐рдХрд▓реНрдк = рд╕рд░рдгреА (
'рдХрдиреЗрдХреНрд╢рди' => 'рдбрд┐рдлрд╝реЙрд▓реНрдЯ',
'рд╡рд┐рд╖рдо_ рд╕реНрдерд╛рди' => рд╕рддреНрдп,
'рдПрдирдХреЛрдб' => рдЕрд╕рддреНрдп,
'рдбреЙрд▓рд░' => рд╕рддреНрдп,
'рдЧрд╛рдбрд╝реА' => рд╕рдЪ рд╣реИ,
'рдпреВрдирд┐рдХреЛрдб' => рд╕рддреНрдп,
'рдмрдЪ' => рдЕрд╕рддреНрдп,
'рдмреИрдХрд╕реНрд▓реИрд╢' => рд╕рддреНрдп
);
$ рд╕рд░рдгреА = $ sanitize-> рд╕реНрд╡рдЪреНрдЫ ($ рд╕рд░рдгреА, $ рд╡рд┐рдХрд▓реНрдк);
рддреЛ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕рд╣реА рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░реЗрдВред
рд╡реИрд╕реЗ, рдЬрдм рд╕реЗ рд╣рдо Sanitize рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдХрд╛рдлреА рддрд╛рд░реНрдХрд┐рдХ рдбрд┐рдЬрд╛рдЗрди рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдЬрд▓реНрджреА рдФрд░ рдмрд╕ рд╕рд╛рдЗрдЯ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред
Appcontroller рдореЗрдВ рд╕реНрд╡рдЪреНрдЫрддрд╛
рдЪреВрдВрдХрд┐ рдкреНрд░рдкрддреНрд░реЛрдВ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдбреЗрдЯрд╛ $ рдЗрд╕-> рдбреЗрдЯрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрддреЗ рд╣реИрдВ, рдФрд░ рд╕рднреА рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдКрдкрд░ рдПрдХ Appcontroller рдРрдб-рдСрди рд╣реИ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рд┐рдВрдЯ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рддрд╛рд░реНрдХрд┐рдХ рд╣реИ:
рдХреНрд▓рд╛рд╕ AppController рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ
{
var $ рдШрдЯрдХ = рд╕рд░рдгреА ('RequestHandler');
var $ рд╕рд╣рд╛рдпрдХреЛрдВ = рд╕рд░рдгреА ('рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ', 'рдЕрдЬрд╛рдХреНрд╕', 'рдиреЗрд╡рд┐рдЧреЗрд╢рди');
рд╕рдорд╛рд░реЛрд╣ рд╕реЗ рдкрд╣рд▓реЗ () {
рдЕрдЧрд░ (рдЦрд╛рд▓реА ($ рдпрд╣-> рдбреЗрдЯрд╛)) {
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ('sanitize');
$ рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝ = рдирдпрд╛ рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝ ();
$ рд╡рд┐рдХрд▓реНрдк = рд╕рд░рдгреА (
'рдХрдиреЗрдХреНрд╢рди' => 'рдбрд┐рдлрд╝реЙрд▓реНрдЯ',
'рд╡рд┐рд╖рдо_ рд╕реНрдерд╛рди' => рд╕рддреНрдп,
'рдПрдирдХреЛрдб' => рдЕрд╕рддреНрдп,
'рдбреЙрд▓рд░' => рд╕рддреНрдп,
'рдЧрд╛рдбрд╝реА' => рд╕рдЪ рд╣реИ,
'рдпреВрдирд┐рдХреЛрдб' => рд╕рддреНрдп,
'рдмрдЪ' => рдЕрд╕рддреНрдп,
'рдмреИрдХрд╕реНрд▓реИрд╢' => рд╕рддреНрдп
);
$ рдпрд╣-> рдбреЗрдЯрд╛ = $ рд╕реНрд╡рдЪреНрдЫрддрд╛-> рд╕реНрд╡рдЪреНрдЫ ($ рдпрд╣-> рдбреЗрдЯрд╛, $ рд╡рд┐рдХрд▓реНрдк);
}
}
}
рдпрд╣ рд╣реИ, рдЕрдм рд░реВрдкреЛрдВ рд╕реЗ рд╕рднреА рдбреЗрдЯрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрдЯ рдЬрд╛рддрд╛ рд╣реИ;) рдпрд╣ рд╕рдЪ рд╣реИ, рдпрд╣рд╛рдВ рд╕рдВрд╕реНрдХрд░рдг 1.2 рдХреА рдПрдХ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛ - рдирд╛рдо рддрд░реНрдХреЛрдВ рдХреЛ рд╕рдЪ рдХреЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдорд┐рд▓рддреА рд╣реИред
рдирд╛рдорд┐рдд рддрд░реНрдХ
рдирдпрд╛ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ args рд╕реБрд╡рд┐рдзрд╛ GET рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реВрдЪрдирд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рд░рд╛рдЙрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдХреБрдЫ рд╕рд░рд▓ рдЪрд░ рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдЪрд╛рд╣рд┐рдП, рдЕрдм рдЖрдк рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
cakephp.org/posts/index/page : 2 / рд╕реЙрд░реНрдЯ: рд╢реАрд░реНрд╖рдХ
рддрджрдиреБрд╕рд╛рд░, рдХрд╣реАрдВ рди рдХрд╣реАрдВ, 2 рдХреЗ рдорд╛рди рд╡рд╛рд▓реЗ рдкреГрд╖реНрда рдЪрд░ рдФрд░ рд╢реАрд░реНрд╖рдХ рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рдХреНрд░рдорд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╡реЗ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИрдВ:
$ рдЗрд╕-> passArgs ['рдкреЗрдЬ'] ;;
$ рдпрд╣-> рдкрд╛рд╕рдЕрд░реНрдЬ ['рд╕реЙрд░реНрдЯ'];
рдпрд╣рд╛рдБ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЕрдзреНрдпрдпрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ - рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреНрдпрд╛ рд╕рдВрджреЗрд╢ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рд░рдХреНрд╖рд╛ рдореЗрдВ рдХрдордЬреЛрд░ рдЬрдЧрд╣ рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ passArgs рднреА рдЗрд╕реЗ рд╕рдВрдЬреАрд╡рдиреА рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдЗрди рддрд░реНрдХреЛрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд╛рдл рдХрд░ рджреЗ :)
рдХрдХреНрд╖рд╛ рд╕реЗрдЯ
рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реБрд╡рд┐рдзрд╛ рдкреВрд░реЗ рд╕рд░рдгреА рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ $-> рдбреЗрдЯрд╛ред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдорд┐рд▓реА рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдбреЗрдЯрд╛ рд╕рд░рдгреА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
$ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ = рд╕рд░рдгреА
(
0 => рд╕рд░рдгреА
(
'рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛' => рд╕рд░рдгреА
(
'рдЗрдж' => рез
, 'рдирд╛рдо' => 'рдлреЗрд▓рд┐рдХреНрд╕'
)
)
, 1 => рд╕рд░рдгреА
(
'рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛' => рд╕рд░рдгреА
(
'рдЗрдж' => реи
, 'рдирд╛рдо' => 'рдмреЙрдм'
)
)
, 2 => рд╕рд░рдгреА
(
'рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛' => рд╕рд░рдгреА
(
'рдЗрдж' => рей
, 'рдирд╛рдо' => 'рдЬрд┐рдо'
)
)
);
рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рд╣рд╛рдБ, рдЖрд╕рд╛рдиреА рд╕реЗ:
$ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо = рд╕реЗрдЯ :: рдЕрд░реНрдХ ($ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, '{n} .User.name');
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, {n} рдПрдХ рд╕реНрдХреЗрд▓рд░ рд╕рд░рдгреА рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, {n} рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рд╕реНрдХреЗрд▓рд░ рд╕рд░рдгреА рдХреЗ рд╕реНрдерд╛рди рдХреЛ рд╕реНрдХреЗрд▓рд░ рдпреБрдХреНрдд рд╕рд░рдгреА рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред
рд╡рд░реНрдЧ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдорд╛рдорд▓рд╛ рдХреЗрд╡рд▓ рдирд┐рдХрд╛рд▓рдиреЗ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИред рдорд░реНрдЬ рд╣реЛрддрд╛ рд╣реИ, рдлреИрд▓рддрд╛ рд╣реИ, рд╕рдорд╛рд╣рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рд╣реЛрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдореЗрд╢рд╛ рдкрд░реНрдпрд╛рдкреНрдд рдорджрдж рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ;), рдФрд░ рдПрдкреАрдЖрдИ рдпрд╣рд╛рдБ рд╣реИ:
trac.cakephp.org/browser/branches/1.2.xx/cake/libs/set.php
рдЧрд╛рдЗрдб
1.2 рдХреЗ рд▓рд┐рдП рдореИрдиреБрдЕрд▓ рдлрд┐рд░ рд╕реЗ рдЕрдкрдиреА рдЬрдЧрд╣ рдкрд░ рд▓реМрдЯ рдЖрдпрд╛ рдерд╛ред рд╕рдЪ рд╣реИ, рдЕрднреА рднреА рдмрд╣реБрдд рдХреБрдЫ рдЕрдВрдбрд░ рдкреНрд░рд┐рдВрдЯрд┐рдВрдЧ рд╣реИ, рд▓реЗрдХрд┐рди, рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рд▓рдЧрд╛рддрд╛рд░ рдкреВрд░рдХ рд╣реИред
Html рдлреЙрд░реНрдо рдореЗрдВ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдпрд╣рд╛рдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
tempdocs.cakephp.org
рд╣рдо рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рднреА рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдкрд╛рдИ рдЧрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдХреЗрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЯрд┐рдХрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред