国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

CodeIgniter框架驗證碼類庫文件與用法示例

2024-05-04 23:56:05
字體:
來源:轉載
供稿:網友

本文實例講述了CodeIgniter框架驗證碼類庫文件與用法。分享給大家供大家參考,具體如下:

折騰了我四五個小時,終于,ci的驗證碼類庫成功的整出來了。

下面請看源碼:

在application/libraries建立Authcode.php文件,代碼如下:

<?phpclass Authcode{ var $CI; var $fontPath;//字體路徑 var $image; var $charLen   = 4; //生成幾位驗證碼 var $arrChr   = array();//驗證碼字符 var $width    = 83; //圖片寬 var $height   = 24; //圖片高 var $bgcolor   = "#ffffff"; //背景色 var $showNoisePix  = true; //生成雜點 var $noiseNumPix  = 80; //生成雜點數量 var $showNoiseLine  = true; //生成雜線 var $noiseNumLine  = 2; //生成雜線數量 var $showBorder  = true; //邊框,當雜點、線一起作用的時候,邊框容易受干擾 var $borderColor  = "#000000"; function Authcode() {  $this->CI = & get_instance();  $this->fontPath = realpath(dirname(__FILE__) . '/fonts/'); //字體文件  //$this->arrChr   = array_merge(range(1, 9) , range('A', 'Z'));//數字字母驗證碼  //$this->arrChr   = range('A', 'Z');//純字母驗證碼  $this->arrChr = range(0, 9);//純數字驗證碼 } /**  * 顯示驗證碼  *  */ function show() {  $this->image = imageCreate($this->width, $this->height);  $this->back = $this->getColor($this->bgcolor);  imageFilledRectangle($this->image, 0, 0, $this->width, $this->height, $this->back);  $size = $this->width / $this->charLen - 4;  if ($size > $this->height) {   $size = $this->height;  }  $left = ($this->width - $this->charLen * ($size + $size / 10)) / $size + 5;  $code = '';  for($i = 0; $i < $this->charLen; $i ++) {   $randKey = rand(0, count($this->arrChr) - 1);   $randText = $this->arrChr[$randKey];   $code .= $randText;   $textColor = imageColorAllocate($this->image, rand(0, 100), rand(0, 100), rand(0, 100));   $font = $this->fontPath . '/' . rand(1, 5) . ".ttf";   $randsize = rand($size - $size / 10, $size + $size / 10);   $location = $left + ($i * $size + $size / 10);   @imagettftext($this->image, $randsize, rand(- 18, 18), $location, rand($size - $size / 10, $size + $size / 10) + 2, $textColor, $font, $randText);  }  if ($this->showNoisePix == true) {   $this->setNoisePix();  }  if ($this->showNoiseLine == true) {   $this->setNoiseLine();  }  if ($this->showBorder == true) {   $this->borderColor = $this->getColor($this->borderColor);   imageRectangle($this->image, 0, 0, $this->width - 1, $this->height - 1, $this->borderColor);  }  $this->CI->session->set_userdata('auth_code', $code);  ob_clean();  header("Content-type: image/jpeg");  imagejpeg($this->image);  imagedestroy($this->image); } /**  * 顯示驗證碼的JS調用  *  */ function showscript() {  //顯示驗證碼  echo "var img_src = '/imgauthcode/show/?';/n";  echo "document.writeln('<img id=/"img_authcode/" src=/"' + img_src + Math.random() + '/" style=/"cursor:hand;/" onclick=/"this.src=img_src + Math.random();/" } /**  * 檢查驗證碼是否正確  *  * @param string $auth_code  * @return bool  */ function check($auth_code = null) {  return ($this->CI->session->userdata('auth_code') && $auth_code) ? ($this->CI->session->userdata('auth_code') === $auth_code) : false; } function getColor($color) {  $color = eregi_replace("^#", "", $color);  $r = $color[0] . $color[1];  $r = hexdec($r);  $b = $color[2] . $color[3];  $b = hexdec($b);  $g = $color[4] . $color[5];  $g = hexdec($g);  $color = imagecolorallocate($this->image, $r, $b, $g);  return $color; } function setNoisePix() {  for($i = 0; $i < $this->noiseNumPix; $i ++) {   $randColor = imageColorAllocate($this->image, rand(0, 255), rand(0, 255), rand(0, 255));   imageSetPixel($this->image, rand(0, $this->width), rand(0, $this->height), $randColor);  } } function setNoiseLine() {  for($i = 0; $i < $this->noiseNumLine; $i ++) {   $randColor = imageColorAllocate($this->image, rand(0, 255), rand(0, 255), rand(0, 255));   imageline($this->image, rand(1, $this->width), rand(1, $this->height), rand(1, $this->width), rand(1, $this->height), $randColor);  } }}

Authcode.php代碼結束

在Controller中,有個admin類,其中有兩個方法:

Class Admin extends CI_Controller{ function __construct() {  parent::__construct();  $this->load->library('Authcode'); }function captcha(){  if($_POST){    if ($this->authcode->check($this->input->post('gd_pic'))) {    echo "right";   } else {    echo '驗證碼不正確,請重新輸入';   }  }else{   $this->load->view('demo');  } } function show_captcha(){ //此方法用于顯示驗證碼圖片,歸一個view中的img的src調用  $this->authcode->show(); }}

下面是在視圖view中創建一個demo.php了,代碼如下:

<?php echo form_open('c=admin&m=captcha');?><input type="text" name="gd_pic" /><img src="<?php echo base_url('?c=admin&m=show_captcha');?>" ><br><input type="submit" name="submit" value="驗證" /><?php echo form_close();?>

OK. 一切結束,終于正常運行了。

希望本文所述對大家基于CodeIgniter框架的PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 清流县| 新河县| 五华县| 龙岩市| 青岛市| 邢台市| 义乌市| 东光县| 五莲县| 遂宁市| 勐海县| 堆龙德庆县| 那曲县| 镇巴县| 尼木县| 扶风县| 舞钢市| 常宁市| 修水县| 瓮安县| 石门县| 察哈| 监利县| 安庆市| 九江市| 高邮市| 岚皋县| 武威市| 正镶白旗| 乐至县| 荔波县| 富民县| 普格县| 连州市| 昌乐县| 沁源县| 通山县| 壤塘县| 壤塘县| 方城县| 陇川县|