рдбреЛрдмрд╡рд░рд╕реБ, рдЦрд╛рдмрд░рд╡рдЪреЗрдВред
рддреНрдпрд╛рдЧ
рдХреИрдкреНрдЪрд╛ рдЕрджреНрд╡рд┐рддреАрдп рдпрд╛ рдЕрдЯреВрдЯ рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдмреЙрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдореБрд╢реНрдХрд┐рд▓реЗрдВ рдЬрд░реВрд░ рдмрдврд╝рд╛рдПрдЧрд╛ред рдЗрд╕реЗ рдЗрд╕рдХрд╛ рдЧреНрд░рд╛рдлрд┐рдХ, рд╕рд╛рде рд╣реА рд╕реБрд░рдХреНрд╖рд╛рддреНрдордХ рднрд╛рдЧ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред рдХреИрдкреНрдЪрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рддрдХ рдПрдХ рд▓рд┐рдВрдХ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ - рд╕рд░реНрд╡рд░ рдореБрдХрд╛рдмрд▓рд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╣рдмрд▓ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдЦрдбрд╝рд╛ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди "рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдЬрдм рд╕рдордп рдЖрдПрдЧрд╛ рддрдм рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред
рддреЛ, рдЬреЛ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ - рд╣реИрдмреНрд░рдХреИрдЯ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рд╢реБрд░реБрдЖрдд
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдПрдХ рдХреИрдкреНрдЪрд╛ рдХреНрдпрд╛ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд░рдХреНрд╖рд╛ рдХрд░рдирд╛ред рдФрд░ рдЗрд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдХреИрдкреНрдЪрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╕рд░рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЗрд╕ рдкреНрд░рднрд╛рд╡ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп "рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░" рднрд╛рдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдмрд╣реБрдд рд╣реА рдкрд░рдд рдЬрд┐рд╕реЗ рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд рдХрд╛рдлреА рдЖрд╕рд╛рдиреА рд╕реЗ рдХреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐, 2-3 рдХреИрдкреНрдЪрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐
domain.ru/captcha-get.php?code= 12345 - рдпрд╣ рд╣рдорд╛рд░рд╛ рдХреИрдкреНрдЪрд╛ рд╣реИ - рджрд░рд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрд╕ рдХреИрдкреНрдЪрд╛ рдХреЛ рддрддреНрд╡реЛрдВ рдореЗрдВ рддреЛрдбрд╝рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдорд╛рдирддрд╛-рдкрддреНрд░рд╛рдЪрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рднреА рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдЕрднреНрдпрд╛рд╕ рд╣реИ (рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдпреИрдВрдбреЗрдХреНрд╕ рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред рдЗрд╕рд▓рд┐рдП, рд╕рдЦреНрддреА рд╕реЗ рдЕрд▓рдЧ рддрддреНрд╡реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред
рдЧреНрд░рд╛рдлрд┐рдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ
рд╕рдмрд╕реЗ рд▓рдВрдмрд╛ред рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдФрд░ рдХреБрдЫ рдЪрд┐рддреНрд░ред
рдПрдХ рдмрд┐рдВрджреБред рд╣рдо рдкрд╛рда рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред PHP рдореЗрдВ 5-6 рд╡рд░реНрдг рдХреИрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЬрд╛рдирддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдХрдо рд╕реЗ рдХрдо рдкреНрд░рддрд┐рд░реЛрдз рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдЕрдкрдирд╛рдпрд╛:
$text = ""; for($i = 0; $i < 5; $i++){ switch(mt_rand(1,3)){ case(1): {$c=chr(rand(ord('a'),ord('z')));break;} case(2): {$c=chr(rand(ord('A'),ord('Z')));break;} case(3): {$c=rand(0,9);break;} } $text.=$c; }
рдмрд┐рдВрджреБ рджреЛред рдкрд╛рда рдХреЛ рдХреБрдЫ рдЫрд╡рд┐ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ 200x60 рдкрд┐рдХреНрд╕реЗрд▓ рдХрд╛ рдЪрд┐рддреНрд░ рдЖрдХрд╛рд░ рдЪреБрдирд╛ - рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реА рдЬрд░реВрд░рддреЛрдВ рдФрд░ рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред
$im = imageCreateTrueColor(200,60);
рдмрд┐рдВрджреБ рддреАрдиред рд╣рдореЗрдВ рдХреБрдЫ рдРрд╕реА рдкреГрд╖реНрдарднреВрдорд┐ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╡рд┐рдкрд░реАрдд рд╣реЛ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдЗрд╕реЗ рдХреЗрд╡рд▓ рдлрд╝рд┐рд▓реНрдЯрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдкрд░ рдмрд╕ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдлрд┐рд▓реНрдЯрд░ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕ рдмреАрдЪ, рдкреГрд╖реНрдарднреВрдорд┐ рдПрдХ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░рдВрдЧ рд╣реЛрдЧреАред
$white = imageColorAllocate($im, mt_rand(170,255),mt_rand(170,255),mt_rand(170,255)); $black = imageColorAllocate($im, mt_rand(0,140),mt_rand(0,140),mt_rand(0,140)); imagefilledrectangle($im,0,0,200,60,$white);
рдпрд╣рд╛рдВ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдореИрдВ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рд╕рдлреЗрдж (рд╣рд▓реНрдХреЗ) рдФрд░ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдХрд╛рд▓реЗ (рдЧрд╣рд░реЗ) рд░рдВрдЧреЛрдВ рдХреЛ рд╕реМрдВрдкрддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж ... рд╣рд╛рдВ, рд╣рд╛рдВ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдкреВрд░реЗ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рднрд░ рджреЗрддрд╛ рд╣реВрдВред
рдЖрдЧреЗ рдмреЗрд╣рддрд░ рд╣реИред рдЪреМрдерд╛ рдмрд┐рдВрджреБ рдкрд╛рда рд╣реИред рдпрд╣ рддрд┐рд░рдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдХрдИ рдлреЛрдВрдЯ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдЦреАрдВрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдкреИрд▓реЗрдЯ рд╕реЗ 6 рдЯреБрдХрдбрд╝реЗ рдЯрд╛рдЗрдк рдХрд┐рдП, рдФрд░ рдпрд╣ рдХреЛрдб рд▓рд┐рдЦрд╛:
$a = mt_rand(-5,5); $s = 40; $f = "captcha_font".mt_rand(1,6).".ttf"; do{ $s--; $b = imagettfbbox ($s, $a, $f, $text); $x = $b[2]-$b[0]; $y = $b[1]-$b[7]; }while(($x>=200)||($y>=60)); $black = imageColorAllocate($im, mt_rand(0,140),mt_rand(0,140),mt_rand(0,140)); imagettftext($im, $s, $a, 100-$x/2, 30+$y/2, $black, $f, $text); imagewave($im);
рд╣рд╛рдВ, рдЪреВрдВрдХрд┐ рдпрд╣ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдлрд╝реЙрдиреНрдЯ рдХрд┐рд╕ рдврд▓рд╛рди рдФрд░ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдлреНрд░реЗрдо рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЙрд▓рдЯрд╛ рдЦреЛрдЬ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдФрд░ рд╡рд╣ ... рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдкрд░рд┐рдгрд╛рдо рд╣реИ:


рд▓реЗрдХрд┐рди рд░реБрдХрд┐рдП, рдЗрдореЗрдЬрд╡реЗ рдлреАрдЪрд░ рдХреНрдпрд╛ рд╣реИ? рдФрд░ рдпрд╣ рд╣рдорд╛рд░реА рд╡рд┐рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рдкрд╣рд▓рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд╣рдорд╛рд░реА рддрд╕реНрд╡реАрд░реЛрдВ рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рддрд░рдВрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
function imagewave($im){ $sx = imagesx($im); $sy = imagesy($im); $dx = mt_rand(0,$sx/2); $xf = mt_rand(-100,100)/20; for($x = 0; $x < $sx; $x++){ $yd = floor(sin(deg2rad($dx+$x)*$xf)*2); $l = array(); for($y = 0; $y < $sy; $y++) $l[$y] = imagecolorat($im,$x,$y); if($yd>0) for($y = 0; $y < $yd; $y++) array_push($l,array_shift($l)); elseif($yd<0) for($y = 0; $y > $yd; $y--) array_unshift($l,array_pop($l)); for($y = 0; $y < $sy; $y++) imagesetpixel($im,$x,$y,$l[$y]); } $dy = mt_rand(0,$sy/2); $yf = mt_rand(-100,100)/20; for($y = 0; $y < $sy; $y++){ $xd = floor(sin(deg2rad($dy+$y)*$yf)*2); $l = array(); for($x = 0; $x < $sx; $x++) $l[$x] = imagecolorat($im,$x,$y); if($xd>0) for($x = 0; $x < $xd; $x++) array_push($l,array_shift($l)); elseif($xd<0) for($x = 0; $x > $xd; $x--) array_unshift($l,array_pop($l)); for($x = 0; $x < $sx; $x++) imagesetpixel($im,$x,$y,$l[$x]); } }
рд╢рд╛рдпрдж рдореИрдВрдиреЗ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдЪреБрдирд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХреИрдкреНрдЪрд╛ рдЗрд╕ рддрд░рд╣ рдмрдирддрд╛ рд╣реИ:


рдкрд╣рд▓реЗ рд╕реЗ рдмрд╣реБрдд рдмреЗрд╣рддрд░ред рдореИрдВрдиреЗ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреЛрдг, рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдлрд╝реЙрдиреНрдЯ рдФрд░ рдПрдХ рд╣реА рд░рдВрдЧ (!) рдкрд░ рдПрдХ рдФрд░ рдкрд╛рда рдЖрдЙрдЯрдкреБрдЯ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬреЛ рдЪрд┐рддреНрд░ рдХреЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИ:


рдХреНрдпрд╛ рд╡рд╣ рд╕рдм рд╣реИ? рд▓реЗрдХрд┐рди рдирд╣реАрдВред рдмреЙрдЯреНрд╕ рдХреЗ рдХрд╛рдо рдХреЛ рдФрд░ рдЬрдЯрд┐рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ-рджреЛ рдмрд╛рд░ рд╣рдорд╛рд░реА рддрд╕реНрд╡реАрд░ рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛:
$yd = mt_rand(-30,30); $black = imageColorAllocate($im, mt_rand(0,140),mt_rand(0,140),mt_rand(0,140)); imageline($im,0,$yd,200,30+$yd,$black); imagewave($im); $black = imageColorAllocate($im, mt_rand(0,140),mt_rand(0,140),mt_rand(0,140)); imageline($im,0,30+$yd,200,60+$yd,$black); imagewave($im);


рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛, рдЪрд▓реЛ рдлреВрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЦреЗрд▓рддреЗ рд╣реИрдВред рдореИрдВ рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░реВрдВрдЧрд╛ - рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
function imagerecolor($im){ $sx = imagesx($im); $sy = imagesy($im); for($x = 0; $x < $sx; $x++){ $rd = mt_rand(80, 120) / 100; $gd = mt_rand(80, 120) / 100; $bd = mt_rand(80, 120) / 100; for($y = 0; $y < $sy; $y++) { $c = imagecolorat($im,$x,$y); $r = (($c >> 16) & 0xFF) * $rd; $g = (($c >> 8) & 0xFF) * $gd; $b = ($c & 0xFF) * $bd; $c = imagecolorallocate($im, $r, $g, $b); imagesetpixel($im,$x,$y,$c); } } }


рдЦреИрд░, рдПрдХ рдХреИрдкреНрдЪрд╛ рдкрд░ рд╣рдорд╛рд░реЗ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рд▓реЛрдЧреЛ рдХреЗ рдмрд┐рдирд╛ рдЦреБрд╢реА рдХреНрдпрд╛ рд╣реИ? рд╕реНрд╡рдпрдВ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ, рдФрд░ рдХреЛрдб рдЕрд╕рдВрднрд╡ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рд╣реИ:
$l = imagecreatefrompng('../static/image/icon16.png'); imagecopy($im,$l,184,44,0,0,16,16); imagedestroy($l);
рдЫрд╡рд┐ рдЦрддреНрдо рд╣реЛ рдЧрдИ рд╣реИ - рд╣рдо рдЗрд╕рдХреЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред
рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░
рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдХреБрдХреАрдЬрд╝ рдореЗрдВ рдХреБрдЫ рдХреЛрдб (рд╕рддреНрд░ рдЖрдИрдбреА, рд╣реИрд╢ рдпрд╛ рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА) рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рд╕рд╛рде рдХрдИ (рдХрдо рд╕реЗ рдХрдо рджреЛ) рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреЛрдиреЛрдВ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рдХреИрдкреНрдЪрд╛ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛? рдпрд╣рд╛рдБ рд╣рдо рдЖрдзрд╛рд░-рдПрдирдХреЛрдбреЗрдб рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕реА рдпреЛрдЬрдирд╛ рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВред рдЬрдм рд╕реЗ рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕ рд╕рд╛рдорд╛рди рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдХрд╛рдлреА рд╕рд░рд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛:
ob_start(); imagepng($im); $b64 = base64_encode(ob_get_contents()); ob_end_clean(); imageDestroy($im); $response = array('key'=>sha512(md5(strtolower($text)).date('DmyH').get_ip().'RANDOM_SALT'),'img'=>'data:image/png;base64,'.$b64);
рдФрд░, рдХрд╣реАрдВ рдФрд░:
$response = json_encode($response); ?>Api.callback(<?=$cid?>,<?=$response?>);
рдЗрд╕ рддрд░рд╣ рд╕реЗ рдлреЙрд░реНрдо рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рднреА рд╕рдВрднрд╡ рд╣реИ - рдореИрдВ рдЗрд╕реЗ рд╣реЛрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВред ;)
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣реИрд╢ рдореЗрдВ рд╣рдо рдХреБрдЫ рдирдордХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдЫрдБрдЯрд╛рдИ рдХреА рдХрдард┐рдирд╛рдИ рдХреЗ рд▓рд┐рдП), рдФрд░ рдХреИрдкреНрдЪрд╛ рдХреЗрд╡рд▓ рдЪрд╛рд▓реВ рдШрдВрдЯреЗ рдореЗрдВ рдорд╛рдиреНрдп рд╣реИ (рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╢реБрдн рд╣реИ рдФрд░ рдЙрд╕рдиреЗ рдХреИрдкреНрдЪрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 15:59 рдкрд░, рдФрд░ 16:00 рдкрд░ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛, рддрдм рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛)ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪрд┐рддреНрд░ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдЖрд╡рд╢реНрдпрдХ рдЪрд┐рддреНрд░ рдХреЗ src рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдлрд╝реАрд▓реНрдб $ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ ['img'] рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡реИрд╕реЗ, sha512 рдлрд╝рдВрдХреНрд╢рди:
function sha512($s){ return hash('sha512',$s); }
рд╣реЛрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ рд╣реИрд╢ ('0' рдФрд░ 'O', 'l' рдФрд░ 'I', рдФрд░ рдЗрд╕реА рддрд░рд╣) рдХреЗ рд╕рдорд╛рди рд╡рд░реНрдгреЛрдВ рдХреА рдЬрдЧрд╣ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВред
рдЖрдЬ рдХреЗ рд▓рд┐рдП рдмрд╕ рдЗрддрдирд╛ рд╣реАред рд╕реМрднрд╛рдЧреНрдп рд╣реИред ;)