codeigniter验证码操作

来源:互联网 发布:淘宝哪个类目好做 编辑:程序博客网 时间:2024/06/08 03:47
控制器application/controllers/welcome.php<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');class Welcome extends CI_Controller {/**a * Index Page for this controller. * * Maps to the following URL * http://example.com/index.php/welcome *- or -   * http://example.com/index.php/welcome/index *- or - * Since this controller is set as the default controller in  * config/routes.php, it's displayed at http://example.com/ * * So any other public methods not prefixed with an underscore will * map to /index.php/welcome/<method_name> * @see http://codeigniter.com/user_guide/general/urls.html */public function index(){$this->load->helper('url');$this->load->view('welcome_message');}//显示 验证码public function captcha(){$this->load->library('captcha');$this->captcha->index();}//检查 验证码public function check($acaptcha){if( $this->input->cookie('captcha_number') == NULL ){return FALSE;}list($value,$time) = explode('|',$this->input->cookie('captcha_number'));if( (time() + 120) <  $time ){return FALSE;}if( $value == md5(strtoupper($acaptcha))){return TRUE;}else{return FALSE;}}}/* End of file welcome.php *//* Location: ./application/controllers/welcome.php */视图application/views/welcome.phpwelcome.php<img src="<?php echo  site_url('welcome/captcha')?>" onClick="this.src='<?php echo site_url('welcome/captcha')?>'+'/?'+Math.random();" style="cursor:pointer;" align="验证码" />类库文件application/libraries/captcha.php<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');class Captcha {private $ci ;function __construct(){$this->ci= & get_instance();$this->ci->load->helper('string');}function index($word='alnum',$number=6,$img_width=150,$img_height=30){// -----------------------------------// Do we have a "word" yet?// -----------------------------------$word = strtoupper(random_string($word,$number));$this->ci->input->set_cookie("captcha_number",md5($word).'|'.(time()+120),120);$font_path = 'system/fonts/texb.ttf';// -----------------------------------// 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// -----------------------------------// PHP.net recommends imagecreatetruecolor(), but it isn't always availableif (function_exists('imagecreatetruecolor')){$im = imagecreatetruecolor($img_width, $img_height);}else{$im = imagecreate($img_width, $img_height);}// -----------------------------------//  Assign colors// -----------------------------------$bg_color= imagecolorallocate ($im, 255, 255, 255);$border_color= imagecolorallocate ($im, 153, 102, 102);$text_color= imagecolorallocate ($im, 204, 153, 153);$grid_color= imagecolorallocate($im, 255, 182, 182);$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 = 5;$x = rand(0, $img_width/($length/3));$y = 0;}else{$font_size= 16;$x = rand(0, $img_width/($length/1.5));$y = $font_size+2;}for ($i = 0; $i < strlen($word); $i++){if ($use_font == FALSE){$y = rand(0 , $img_height/2);imagestring($im, $font_size, $x, $y, substr($word, $i, 1), $text_color);$x += ($font_size*2);}else{$y = rand($img_height/2, $img_height-3);imagettftext($im, $font_size, $angle, $x, $y, $text_color, $font_path, substr($word, $i, 1));$x += $font_size;}}// -----------------------------------//  Create the border// -----------------------------------imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $border_color);// -----------------------------------//  Generate the image// -----------------------------------header('Content-Type: image/png');imagepng($im);  imagedestroy($im);}}

0 0
原创粉丝点击