
рдпрджрд┐ рдЖрдк рдПрдХ рд╣реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдПрдХ рдмрдбрд╝реА рдЯреАрдо рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ: рд╣рдо do_something () рдлрд╝рдВрдХреНрд╢рди рдХреЛ do_something_with_blackjack () рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдордиреЗ рдЕрдкрдиреА рд╢рд╛рдЦрд╛ рдореЗрдВ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рднреЗрдЬрд╛ред рдЙрд╕реА рд╕рдордп, рдХрд┐рд╕реА рдФрд░ рдиреЗ рдПрдХ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдЬреЛрдбрд╝рд╛, рд▓реЗрдХрд┐рди рдкреБрд░рд╛рдиреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде, рдЗрд╕рдХреА рд╢рд╛рдЦрд╛ рдореЗрдВ рднреАред рдЕрд▓рдЧ-рдЕрд▓рдЧ, рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗрдЯ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╡рд┐рд▓рдп рдХреЗ рдмрд╛рдж, рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред
рд▓реЗрдЦ рдПрдХ рдРрд╕реА рддрдХрдиреАрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕реЗ "рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ" рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рд╣реА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд╕рднреА рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдФрд░ рд╕реАрдзреЗ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ / рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ phpBB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рджрд┐рдЦрд╛рдПрдВрдЧреЗ рдХрд┐ рдЖрдк SQL рдХреНрд╡реЗрд░реА рдХреЛ рдХреИрд╕реЗ "рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░" рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдХреНрд░реАрдирд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ SQL рдЗрдВрдЬреЗрдХреНрд╢рди рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВ)ред
рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╡рд┐рд╡рд░рдг
рдЖрдЗрдП рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ: рд╣рдо рд╕рдорд╕реНрдпрд╛ рдФрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рддрд░реАрдХреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред
рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдХреЛрдб рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рд╣реИрдВ рдФрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди (рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, PHP рдХреЛрдб) рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдХреЛрдб рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрджрд▓рддреЗ рд╣реИрдВ (рдкрд╣рд▓рд╛ рд╡рд░реНрдг "-" рдХрд╛ рдЕрд░реНрде рд╣реИ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рд╣рдЯрд╛рдирд╛, рдФрд░ "+" рдХрд╛ рдЕрд░реНрде рд╣реИ рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдирд╛):
<?php -function do_something() +function print_hello() { echo "Hello world!\n"; } $a = 1; -do_something(); +print_hello(); $b = 2; $c = 3;
рдЬрдм рд╣рдо рдРрд╕рд╛ рдХрд░ рд░рд╣реЗ рдереЗ, рддреЛ рд╣рдорд╛рд░рд╛ рд╕рд╣рдпреЛрдЧреА рдПрдХ рдЕрдиреНрдп рд╢рд╛рдЦрд╛ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛:
<?php function do_something() { echo "Hello world!\n"; } $a = 1; do_something(); $b = 2; +do_something(); $c = 3;
рдЪреВрдВрдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╕реБрд╕рдВрдЧрдд рд╣реИрдВ (рд╣рдордиреЗ рдХреЛрдб рдХреА рд╡рд┐рднрд┐рдиреНрди рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ), рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдорд┐рд▓рддреЗ рд╣реИрдВ:
<?php function print_hello() { echo "Hello world!\n"; } $a = 1; print_hello(); $b = 2; do_something(); $c = 3;
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рдЕрдзрд┐рдХ noxistent рдлрд╝рдВрдХреНрд╢рди (do_something) рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХреЛрдб рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдХреБрдЫ рд▓реЛрдЧ "рд╕реБрд╡рд┐рдзрд╛ рд╢рд╛рдЦрд╛рдУрдВ" рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдПрдХ рд╣реА рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╢рд╛рдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рдд рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд▓ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдПрдХ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд▓рд┐рдП рдорд╣рдВрдЧрд╛ рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ
рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреЛрдб рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рд╕рднреА рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд╡рд┐рд▓рдп рдХреЗ рдмрд╛рдж рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реЛред рдпрд╣реА рд╣реИ, рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЕрдкрдирд╛ рдХрд╛рдо рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рдЕрдиреНрдп рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рдж рдирд╛рдо рдмрджрд▓реЗрдВред рдЖрдкрдХреЛ рдПрдХ рддрдВрддреНрд░ рднреА рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдкреБрд░рд╛рдиреА рд╢реИрд▓реА рдореЗрдВ рдХреЛрдб рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реЗрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП, рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ;
- рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛;
- рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рдХреЛрдб (рд╡реИрдХрд▓реНрдкрд┐рдХ) рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ред
рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реАред
рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИ
рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреБрд░рд╛рдиреА рд╢реИрд▓реА рдХреЗ рдХреЛрдб рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рд╣рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдФрд░ рдордЬрд╝рдмреВрддреА рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧреА рдХрд┐ рдХреЛрдб рдХрд╛ рдЕрдм рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрдиреЗрдВ рд▓реМрдЯрд╛рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреБрд░рд╛рдирд╛ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рд╣реЛрддрд╛ рд╣реИ - do_somethingред
рдСрдЯреЛ рдмрджрд▓реЗрдВ
рд╣рдорд╛рд░реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Print_hello рдХреЗ рд╕рд╛рде do_something рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП sed рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди do_something рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред
рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рдХреЛрдб рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣
рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рдорд╛рд░реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ do_something рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ print_hello рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде:
$func_prefix = "do_"; $func_name = $func_prefix . "something";
рдРрд╕реА рд╕рдорд╕реНрдпрд╛ рд╕реА рдФрд░ рдЬрд╛рд╡рд╛ рдЬреИрд╕реА рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рдХреА рдЧрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рднреА рдореМрдЬреВрдж рд╣реИред C рдореЗрдВ, рдЖрдк рд╣рдореЗрд╢рд╛ #define рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореИрдХреНрд░реЛрдЬрд╝ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рдкрд░рд╛рд╡рд░реНрддрди рддрдВрддреНрд░ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо do_something рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ (рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрд░реЛрдХреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ):
function do_something() { error_log(__FUNCTION__ . " found. Trace: " . (new Exception())); return print_hello(); }
рдирддреАрдЬрддрди, рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХреЛ рдмрд┐рдЫрд╛рдиреЗ рдХреЗ рдмрд╛рдж (рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 100% рдХрд╡рд░реЗрдЬ рдирд╣реАрдВ рд╣реИ), рддреЛ рдЖрдк рдкреБрд░рд╛рдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд╛рдкрддрд╛ рд╕рдВрджрд░реНрдн рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд▓рд┐рдЦрд┐рдд рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЪрд░рдг
рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ:
- рд╕рднреА рдирд╡реАрдирддрдо рдбреЗрд╡рд▓рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рдорд░реНрдЬ рдХрд░реЗрдВ
- рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ;
- рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рд╣реИрдВ
- рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧрд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВ;
- рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛, рдЙрддреНрдкрд╛рджрди рдХреЛрдб рд░рдЦрдирд╛;
- рдХреЛрдб рдореБрдЦреНрдп рд╡рд┐рдХрд╛рд╕ рд╢рд╛рдЦрд╛ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ "рд╣реБрдХ" рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд░реЛрдХ рди рджреЗ;
- рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдЙрддреНрдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдб рдХреЛ рд╣рд┐рдЯ рдХрд░рддрд╛ рд╣реИ;
- (рд╡реИрдХрд▓реНрдкрд┐рдХ) рдЙрддреНрдкрд╛рджрди рд╕реЗ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрд╛рджрди рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
- рдЖрдкрдиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд░рд┐рдлрд▓реЗрдХреНрдЯ рдХрд┐рдпрд╛ рд╣реИ!
рдЦрдВрдб 7 рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рднрдВрдбрд╛рд░ рдореЗрдВ рдЕрдиреНрдп рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рдкреБрд░рд╛рдирд╛ рдХреЛрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЕрднреА рддрдХ рдореБрдЦреНрдп рд╡рд┐рдХрд╛рд╕ рд╢рд╛рдЦрд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рд▓рдп рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдРрд╕реА рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рд╡рд┐рд▓рдп рдХрд░рдирд╛ рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЗ рд╕рдВрджрд░реНрдн рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рд╡рд░реНрдгрд┐рдд рддрдХрдиреАрдХ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд▓рд┐рдкрд┐рдпреЛрдВ рдФрд░ рдореИрдиреБрдЕрд▓ рдХрд╛рдо рдХреА рдПрдХ рдЫреЛрдЯреА рд░рд╛рд╢рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдХрдард┐рди рддрд░реАрдХрд╛ рд╣реИред
PhpBB рдореЗрдВ SQL рдЙрдкрдпреЛрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдирд╛
рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рдХрд░реАрдм рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдХрд┐ SQL рдЗрдВрдЬреЗрдХреНрд╢рди рд╕реЗ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЗрд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП phpBB рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рдП:
PhpBB рдореЗрдВ SQL рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ phpBB рдореЗрдВ SQL рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрд╡рдпрдВ "рд╢рд╛рдорд┐рд▓ / рдбреАрдмреА" рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рдФрд░ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ $ db "common.php" рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
$ ls includes/db db_tools.php index.htm mssqlnative.php oracle.php dbal.php mssql.php mysql.php postgres.php firebird.php mssql_odbc.php mysqli.php sqlite.php
рдЗрд╕ рдкреНрд░рдХрд╛рд░, "рд╢рд╛рдорд┐рд▓ / рдбреАрдмреА" рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рджреМрд░рд╛рди рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВрдЧреЗред
рд╕рдорд╕реНрдпрд╛ рдХреЗ рдкреИрдорд╛рдиреЗ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо grep рдирд╛рдордХ рдПрдХ рдорд╣рд╛рди рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:
$ grep -RF 'sql_query(' * | wc -l 1611
рдХрд┐ sql_query () рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ 1,600 рдХреЙрд▓ рд╣реИрдВред рд╣рдорд╛рд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрддрдиреА рд╕рд╛рд░реА рд╕реАрдЯреЛрдВ рдХреА рдЬрдЧрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред рд╕рдВрднрд╡рддрдГ рд╕реНрдерд╛рдиреЛрдВ рдХреА рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдПрдХ рдХрд╛рд░рдг рд╣реИ рдХрд┐ phpBB рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЕрднреА рддрдХ рдЗрди рдХреЙрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рдЖрдЗрдП рдЕрдм рджреЗрдЦреЗрдВ рдХрд┐ рдЙрдирдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИред
рдпрд╣рд╛рдБ sql_query рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ:
function sql_query($query = '', $cache_ttl = 0) тАж
рдпрд╣рд╛рдВ рд╕реЗ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдЕрдиреБрд░реЛрдз рд╣реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ, рдФрд░ рдХреЙрд▓рд░ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реНрдХреНрд░реАрдирд┐рдВрдЧ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
Viewtopic.php рд╕реЗ рдЙрджрд╛рд╣рд░рдг:
$sql = 'SELECT forum_id FROM ' . TOPICS_TABLE . " WHERE topic_id = $topic_id"; $result = $db->sql_query($sql);
рдЪреВрдБрдХрд┐ $ topic_id рдмрд╛рд╣рд░ рд╕реЗ рдЖрддрд╛ рд╣реИ рдФрд░ рдареАрдХ рд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛, рдЗрд╕рд▓рд┐рдП SQL рддреНрд░реБрдЯрд┐ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ SQL рдЗрдВрдЬреЗрдХреНрд╢рди рджреЛрдиреЛрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред UNION рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╣рдо рдХрд┐рд╕реА рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдЦреАрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рднреА рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдиреА рдкреВрд░реА рд╢рдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдРрд╕реЗ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреБрдЫ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
$sql = 'SELECT forum_id FROM ' . TOPICS_TABLE . ' WHERE topic_id = ?d'; $result = $db->sql_query_escaped($sql, $topic_id);
рдпрд╣реА рд╣реИ, "$ topic_id" рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп "D?", рдЬрд┐рд╕реЗ sql_query_escaped рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╣рдореЗрд╢рд╛ рдПрдХ рдирдВрдмрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдСрдЯреЛ рдХреНрд╡реЗрд░реА SQL рдХреНрд╡реЗрд░реА
рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЖрд╡рд░рдг рдмрдирд╛рдиреЗ рдФрд░ dbal.php рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ:
function sql_query_escaped($query_template) { $values = func_get_args(); array_shift($values); $regexp = '/\\?[dsar]/s'; preg_match_all($regexp, $query_template, $matches); foreach ($matches[0] as $i => $m) { if ($m == '?d') $values[$i] = intval($values[$i]); else if ($m == '?s') $values[$i] = "'" . $this->sql_escape($values[$i]) . "'"; else if ($m == '?a') $values[$i] = implode(',', array_map('intval', $values[$i])); } $idx = 0; $replace_func = function($placeholder) use ($values, &$idx) { $placeholder = $placeholder[0]; return $values[$idx++]; }; $query = preg_replace_callback($regexp, $replace_func, $query_template); return $this->sql_query($query); }
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдорд╛рдирдХ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдкреАрдбреАрдУред
рдбреАрдмрдЧ SQL рдХреНрд╡реЗрд░реАрдЬрд╝
PhpBB рдореЗрдВ, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдкрд░ SQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдЕрд╕реНрдерд╛рдпреА рдкреИрдЪ рдЬреЛрдбрд╝реЗрдВ:
Sql_query () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЬрдм рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдирд╛ рддрдерд╛рдХрдерд┐рдд "рдЯрдХрдЯрдХреА рд╡рд┐рдзрд┐" рд╣реИред рд╣рдореЗрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рдкрджреНрдзрддрд┐ рдХреЛ рд╣рдо рдмрджрд▓рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреЛрдб рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦрдХрд░ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдореБрдЦреНрдп рдкреИрдЯрд░реНрди рдХреЛ рдЦреЛрдЬреЗрдВред
рддреЛ, рд╣рдо рдлрд┐рд░ рд╕реЗ grep рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рд╣рдо sql_query () рдХреЗ рдЙрд▓реНрд▓реЗрдЦ рдХреА рдЖрдВрдЦреЛрдВ рд╕реЗ рджреЗрдЦреЗрдВрдЧреЗ рдФрд░ рдкрд╛рдП рдЧрдП рдореБрдЦреНрдп рдкреИрдЯрд░реНрди рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ:
$ grep -RF 'sql_query(' * | less
рдореБрдЦреНрдп рдкреИрдЯрд░реНрди:
- $ рдкрд░рд┐рдгрд╛рдо = $ db-> sql_query ($ sql); // $ sql рдЪрд░ рдореЗрдВ рдХреНрд╡реЗрд░реА рдкрд╛рда рд╣реЛрддрд╛ рд╣реИ;
- $ db-> sql_query ("DELETE | UPDATE | SELECT ..."); // рдЕрдиреБрд░реЛрдз рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЖрдк рдпрд╣ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╣реА рдирд╛рдо рд╣рдореЗрд╢рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - "$ db"ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдЕрдиреНрдп рдирд╛рдо рдХреЗ рддрд╣рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдХреЛрдИ sql_query рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ:
$ grep -RF 'sql_query(' * | grep -vF '$db->sql_query('
рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЕрднреА рднреА рд╕рдВрджрд░реНрдн рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдХрдИ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдбреЙрдХреНрд╕ / *ред html - рдЫреЛрдбрд╝реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░рд▓реЗрдЦрди рд╣реИ;
- рд╢рд╛рдорд┐рд▓ / db / db_tools.php - рд╡рд░реНрдЧ рдореЗрдВ sql_table_exists, sql_alter_table рдФрд░ рдЕрдиреНрдп DDL рд╡рд┐рдзрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ;
- рд╢рд╛рдорд┐рд▓ рд╣реИрдВ / db / dbal.php: sql_query_limit рд╡рд┐рдзрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рдореНрдорд┐рд▓рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ, рдЬреЛ рд╕реНрд╡рдпрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдврд╛рд▓ рджреЗрддреЗ рд╣реИрдВ;
- рд╢рд╛рдорд┐рд▓ рд╣реИрдВ / db / (mysql | mssql, firebird | ...)ред php - mysql_query, mssql_query, рдЖрджрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ;
- рд╢рд╛рдорд┐рд▓ рд╣реИрдВ / functions_convert.php - рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп (phpBB рдХреЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ);
- рдбреЗрдЯрд╛рдмреЗрд╕ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП / рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ / рдХрдиреНрд╡рд░реНрдЯ _ *ред php - рд╕реНрдХреНрд░рд┐рдкреНрдЯ;
- install / install_convert.php рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднреА рд╣реИред
рдЗрд╕ рд╕рдм рд╕реЗ, рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ dal heirs рдореЗрдВ sql_query () рдХреЙрд▓ рдХреЗ рд╕рд╛рде-рд╕рд╛рде dbal рдореЗрдВ рднреА рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рд╣рдореЗрдВ sql_query_limit рдХреЗ рд╕рднреА рдХреЙрд▓реЛрдВ рдХреЛ рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдбреЗрдЯрд╛рдмреЗрд╕ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ SQL рдЗрдВрдЬреЗрдХреНрд╢рди рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рднреА SQL рдХреНрд╡реЗрд░реА рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛рддреА рд╣реИрдВ рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЙрдирдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг SQL рдЗрдВрдЬреЗрдХреНрд╢рди рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрди рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред
рдкрд╛рд░реНрд╕рд┐рдВрдЧ $ db-> sql_query ('рдЪрдпрди / рдЕрджреНрдпрддрди / рд╡рд┐рддрд░рдг ...')
рдЖрдЗрдП рдЕрдм рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВ рдЬреЛ SQL рдХреНрд╡реЗрд░реА рд╕реАрдзреЗ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдкрд░ рд╣рдореЗрдВ sql_query рдХреЗ рд╕рднреА рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдЦреЛрдЬреЗрдЧреАред Sql_query ($ sql) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдРрд╕реЗ рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рдХрд╛ рдЪрдпрди рдХрд░реЗрдВрдЧреЗред
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ: рд╣рдо рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЯреЛрдХрди рдореЗрдВ рддреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреБрдХреНрд░рдо "$ db", "->", рдФрд░ "sql_query" рдХреЛ рдвреВрдВрдврддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдХреЛрд╖реНрдардХ рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕рдорд╛рди рдХреНрд╡реЗрд░реА рд╣реЛрдЧреАред рдЯреЛрдХрдирд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб PHP 5.3 рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
<?php
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рд▓рдЧрднрдЧ 130 рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдорд╛рдиреНрдпрддрд╛ рджреА рд╣реИ, рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ "sql_query" рдХреА рд╕рднреА рдкрд╛рдареНрдп рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХрд╛ рд▓рдЧрднрдЧ 8% рд╣реИред рдЖрдк рдпрд╣ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкрд╛рдпрд╛ рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдлрд╛рд░реНрдо рдХреА рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ
includes/acp/acp_attachments.php 'INSERT INTO ' . EXTENSIONS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary) includes/acp/acp_bbcodes.php 'INSERT INTO ' . BBCODES_TABLE . $db->sql_build_array('INSERT', $sql_ary)
рдпрд╣реА рд╣реИ, sql_build_array рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЦреЗрддреЛрдВ рдореЗрдВ рдорд╛рди рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдорд╛рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдЪ рдЧрдП рд╣реИрдВ рдФрд░ рдЖрдк рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЫреВ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╛рд░реНрд╕рд┐рдВрдЧ $ db-> sql_query ($ sql)
рдЕрдм рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреНрд╡реЗрд░реА рдХрд╛ рдкрд╛рда рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬрдм рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рдХрд╛ рдореВрд▓реНрдп $ sql рдЪрд░ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдПред рдЖрдЗрдП рдЕрдиреБрд░реЛрдз рдХреЙрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рд╕реНрд╡рдпрдВ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
$ grep -A 5 -B 5 -RF '$db->sql_query($sql' * | less
рдХреЛрдб рд╕реЗ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреБрд░реЛрдз рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИрдВ:
$sql = '...';
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, $ sql рдЪрд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдФрд░ рдорд╛рди рдХрд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ sql_query () рдХреЙрд▓ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдРрд╕реЗ рдорд╛рдорд▓реЗ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдмрд╕реЗ рдЖрдо рдФрд░ рд╕рд░рд▓ рд▓рд┐рдЦреЗрдВрдЧреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХреЗ рдХрд┐ рд╣рдо рдХрд┐рд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
<?php
рдкреНрд░рддреНрдпрдХреНрд╖ рдХреНрд╡реЗрд░реА рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЕрдВрдд рдореЗрдВ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (рд▓рдЧрднрдЧ 1150) рдкрд░ рднреА рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рднреА sql_query рдкрд╛рдареНрдп-рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХрд╛ рд▓рдЧрднрдЧ 70% рд╣реИ! рдЖрдЗрдП рдЕрдм рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджреЗрддреЗ рд╣реИрдВ:
cron.php 59 $db->sql_query($sql); 'UPDATE ' . CONFIG_TABLE . " SET config_value = '" . $db->sql_escape(CRON_ID) . "' WHERE config_name = 'cron_lock' AND config_value = '" . $db->sql_escape($config['cron_lock']) . "'" тАж includes/acp/acp_forums.php 243 $result = $db->sql_query($sql); 'SELECT * FROM ' . FORUMS_TABLE . " WHERE forum_id = $forum_id" ... 1096 $db->sql_query($sql); 'DELETE FROM ' . FORUMS_TABLE . ' WHERE ' . $db->sql_in_set('forum_id', $forum_ids) includes/acp/acp_reasons.php ... 96 $result = $db->sql_query($sql); 'SELECT reason_id FROM ' . REPORTS_REASONS_TABLE . " WHERE reason_title = '" . $db->sql_escape($reason_row['reason_title']) . "'" ... includes/acp/acp_search.php 320 $result = $db->sql_query($sql); 'SELECT post_id, poster_id, forum_id FROM ' . POSTS_TABLE . ' WHERE post_id >= ' . (int) ($post_counter + 1) . ' AND post_id <= ' . (int) ($post_counter + $this->batch_size)
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдЙрдкрдпреЛрдЧ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ $ db-> sql_escape рдФрд░ $ db-> sql_in_set: рд╣рдореЗрдВ рдРрд╕реЗ рддрд░реАрдХреЛрдВ рдХреА рдХреЙрд▓ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкреНрд░рддреНрдпрдХреНрд╖ рдХреЛрдб рдореЗрдВ рднрд╛рдЧрдиреЗ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдкрд░ рдЗрдВрдЯреИрд▓ () рдФрд░ рдЗрдВрдЯ рдХреЛ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВред
рдХреНрд╡реЗрд░реА рдкрд╛рда рд░реВрдкрд╛рдВрддрд░рдг
рдЕрдм рдЬрдм рд╣рдордиреЗ рд╕реАрдЦрд╛ рд╣реИ рдХрд┐ рдХреНрд╡реЗрд░реА рдХреЗ рдкрд╛рда рдХреЛ рдХреИрд╕реЗ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реИ, рдпрд╣ рдПрдХ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд╡реЗрд░реА рдХреЗ рдЕрдиреБрд░реВрдк рдЯреЛрдХрди рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдФрд░ рдЯреЛрдХрди рдХреА рдПрдХ рдФрд░ рд╕рд░рдгреА рд▓реМрдЯрд╛рдПрдВ, рдЬрд┐рд╕рдореЗрдВ sql.query_escaped рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИ, рд╕рд╛рде рд╣реА рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реНрдХ рднреА рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд┐рдзрд┐ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
$sql = 'SELECT user_id, author_id FROM ' . PRIVMSGS_TO_TABLE . ' WHERE msg_id = ' . $attachment['post_msg_id'] ; $result = $db->sql_query($sql);
┬л?d┬╗, , , ┬л_id┬╗, . , , ┬л┬╗ .
, , . , , . '?r', sql_query() , sql_query_escaped(), .
function rewrite_tokens($in_tokens) { static $string_types = array(T_CONSTANT_ENCAPSED_STRING, T_ENCAPSED_AND_WHITESPACE, '"'); $type = $text = null; $line = 1;
, ( cron.php):
$sql = 'UPDATE ' . CONFIG_TABLE . " SET config_value = '" .'?r'. "' WHERE config_name = 'cron_lock' AND config_value = '" .'?r'. "'"; $db->sql_query_escaped($sql, $db->sql_escape(CRON_ID), $db->sql_escape($config['cron_lock']));
:
$sql = 'UPDATE ' . CONFIG_TABLE . " - SET config_value = '" . $db->sql_escape(CRON_ID) . "' - WHERE config_name = 'cron_lock' AND config_value = '" . $db->sql_escape($config['cron_lock']) . "'"; -$db->sql_query($sql); + SET config_value = '" .'?r'. "' + WHERE config_name = 'cron_lock' AND config_value = '" .'?r'. "'"; +$db->sql_query_escaped($sql, $db->sql_escape(CRON_ID), $db->sql_escape($config['cron_lock']));
, $sql:
- $db->sql_query('UPDATE ' . CONFIG_TABLE . ' SET config_value = ' . $sql_update . " WHERE config_name = '" . $db->sql_escape($config_name) . "'"); + $db->sql_query_escaped('UPDATE ' . CONFIG_TABLE . ' SET config_value = ' .'?r'. " WHERE config_name = '" .'?r'. "'", $sql_update, $db->sql_escape($config_name));
- '?r', . ( ┬лWHERE id = $forum_id┬╗). , ┬л┬╗ . , .
, :
$ grep -RF 'sql_query(' * | wc -l 335
, 80% . 20% , , 80% , .
,
, ┬л┬╗ . , , :
- sql_query_escaped sql_query;
- "?r";
- ;
- , ┬л┬╗ SQL.
"?r", :
- , SQL-, ;
- тАФ , ┬л?d┬╗;
"... '?r' ..."
, "... ?s ..."
;- SQL, .
replacer/direct_sql.php тАФ SQL sql_query()
replacer/sql_assignment.php тАФ sql_query($sql)
replacer/rewrite.php тАФ SQL