рдХреЛрдбрд┐рдиреЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдХреИрдкреНрдЪрд╛ рд╣реЗрд▓реНрдкрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди


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

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


рдлрд╝рд╛рдЗрд▓реЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрдорд╛ рд╣реЛрддреА рд╣реИрдВред

рдпрджрд┐ рдЖрдк рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдирдХ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд╛рда рдХреА рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реЗрдЦрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╡рд┐рджреНрдпрд╛рд▓рдпреЛрдВ рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдХреНрд╕рд░ рдЫрд╡рд┐ рд╕реАрдорд╛ рд╕реЗ рдкрд░реЗ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рджрд░реНрдЬ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЬреЛ, рдмрджрд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдирд╕реЛрдВ рдХреЛ рдЦрд░рд╛рдм рдХрд░ рджреЗрддрд╛ рд╣реИред


рдпрд╣ 8 рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд░реНрдг рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ 6 рдЖрдХреГрддрд┐ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рдмрд╛рдХреА рд╕рд╣реА рд╕реАрдорд╛ рд╕реЗ рдкрд░реЗ "рдЪрд▓реЗ рдЧрдП" рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдЙрдЯрдкреБрдЯ рдЫрд╡рд┐ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдпреЛрдЬрди рдирд╣реАрдВ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЗрди рдХрдорд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдереЗред

рдЙрджреНрджреЗрд╢реНрдпреЛрдВ:
  1. рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕реАрдзреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдХрд░реЗрдВред
  2. рдЫрд╡рд┐ рдХреЛ рдУрд╡рд░рдлреНрд▓реЛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╛рддреНрд░реЛрдВ рдХреА рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░реЗрдВред
  3. рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВред
  4. рдПрдХ рдлреНрд░реЗрдо рдХреЗ рд╕рд╛рде рдФрд░ рдПрдХ рдлреНрд░реЗрдо рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВред
  5. рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░рдВрдЧ рдпреЛрдЬрдирд╛ рдкреАрдврд╝реА рдЬреЛрдбрд╝реЗрдВред


рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
MY_captcha_helper.php
function create_captcha_stream($data = '') { $defaults = array('word' => '', 'img_width' => 150, 'img_height' => 30, 'font_path' => '', 'random_str_length' => '5', 'border' => TRUE); foreach ($defaults as $key => $val) { if ( ! is_array($data)) { if ( ! isset($$key) OR $$key == '') { $$key = $val; } } else { $$key = ( ! isset($data[$key])) ? $val : $data[$key]; } } if ( ! extension_loaded('gd')) { return FALSE; } // ----------------------------------- // Do we have a "word" yet? // ----------------------------------- if ($word == '') { $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $str = ''; for ($i = 0; $i < $random_str_length; $i++) { $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1); } $word = $str; } // ----------------------------------- // Determine angle and position // ----------------------------------- $length = strlen($word); $angle = ($length >= 6) ? rand(-($length-6), ($length-6)) : 0; $x_axis = rand(6, (360/$length)-16); $y_axis = ($angle >= 0 ) ? rand($img_height, $img_width) : rand(6, $img_height); // ----------------------------------- // Create image // ----------------------------------- if (function_exists('imagecreatetruecolor')) { $im = imagecreatetruecolor($img_width, $img_height); } else { $im = imagecreate($img_width, $img_height); } // ----------------------------------- // Assign colors // ----------------------------------- /* RAND */ $red = rand(50, 100); $green = rand(50, 100); $blue = rand(50, 100); $bg_color = imagecolorallocate($im, 255, 255, 255); $border_color = imagecolorallocate($im, $red, $green, $blue); $text_color = imagecolorallocate($im, $red+30, $green+30, $blue+30); $grid_color = imagecolorallocate($im, $red+60, $green+60, $blue+60); $shadow_color = imagecolorallocate($im, 255, 240, 240); // ----------------------------------- // Create the rectangle // ----------------------------------- ImageFilledRectangle($im, 0, 0, $img_width, $img_height, $bg_color); // ----------------------------------- // Create the spiral pattern // ----------------------------------- $theta = 1; $thetac = 7; $radius = 16; $circles = 20; $points = 32; for ($i = 0; $i < ($circles * $points) - 1; $i++) { $theta = $theta + $thetac; $rad = $radius * ($i / $points ); $x = ($rad * cos($theta)) + $x_axis; $y = ($rad * sin($theta)) + $y_axis; $theta = $theta + $thetac; $rad1 = $radius * (($i + 1) / $points); $x1 = ($rad1 * cos($theta)) + $x_axis; $y1 = ($rad1 * sin($theta )) + $y_axis; imageline($im, $x, $y, $x1, $y1, $grid_color); $theta = $theta - $thetac; } // ----------------------------------- // Write the text // ----------------------------------- $use_font = ($font_path != '' AND file_exists($font_path) AND function_exists('imagettftext')) ? TRUE : FALSE; if ($use_font == FALSE) { $font_size = 7; $x = rand(1, $img_width-(($length*$font_size)*2)); $y = 0; } else { $font_size = 12; $x = rand(1, $img_width-($length*$font_size)); $y = $font_size+2; } for ($i = 0; $i < strlen($word); $i++) { if ($use_font == FALSE) { $y = rand(1 , $img_height-($font_size*3)); imagestring($im, $font_size, $x, $y, substr($word, $i, 1), $text_color); $x += ($font_size*2); } else { $y = rand($font_size , $img_height-($font_size/3)); imagettftext($im, $font_size, $angle, $x, $y, $text_color, $font_path, substr($word, $i, 1)); $x += $font_size; } } // ----------------------------------- // Create the border // ----------------------------------- if ($border == TRUE) { imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $border_color); } // ----------------------------------- // Generate the image // ----------------------------------- header("Content-type: image/jpeg"); ImageJPEG($im); ImageDestroy($im); return $word; } 


рдХреИрдкреНрдЪрд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдореВрд▓ рдХрд╛рд░реНрдп рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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

рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рдПрдБ рдЬрд╣рд╛рдБ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛ рд╣реИ:
 $this->load->helper('captcha'); $prefs = array( //  ,     'word' => 'text', //  'img_width' => 100, //   (int) 'img_height' => 30, //   (int) 'random_str_length' => 5, //    (int) 'border' => FALSE, //   (bool) 'font_path' => 'path_to_.ttf' //     ); $word = create_captcha_stream($prefs); $this->session->set_flashdata('word', $word); 


рдлрд╝рдВрдХреНрд╢рди create_captcha_stream - рдЙрддреНрдкрдиреНрди рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдФрд░ рдЫрд╡рд┐ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рдж рдХреА рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рд╕рддреНрд░ рдореЗрдВ рд▓рд╛рдЗрди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

рддрджрдиреБрд╕рд╛рд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЫрд╡рд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕ рдкреНрд░рдкрддреНрд░ рдХреЗ рд╕рд╛рде рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдЬрд╣рд╛рдВ рдХреИрдкреНрдЪрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЯреИрдЧ:
<img src=тАЭ yoursite.com/ тАЭ />


рдПрдХ рдЙрддреНрдкрдиреНрди рдХреИрдкреНрдЪрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг

рдЕрдм, рдЬрдм рдХреИрдкреНрдЪрд╛ рд╕рддреНрд░ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рд▓рд┐рдЦреА рдЬрд╛рдПрдЧреА рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЫрд╡рд┐ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИред

рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреА рдорд╛рдиреНрдпрддрд╛:
 $captcha = trim($this->input->post('captcha')); //      $word = $this->session->flashdata('word'); //     if ($word == $captcha) { echo "Login sucsessfull"; } else { echo "Bad login"; } 


рдЖрдк strtolower() рд▓реЛрдЕрд░рдХреЗрд╕ рд╡рд░реНрдг рд░реВрдкрд╛рдВрддрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЗрд╕ рд╕рдВрд╡реЗрджрдирд╢реАрд▓рддрд╛ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред

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

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


All Articles