主页 > PHP | WEB开发 > CI中验证码的使用

CI中验证码的使用

2010 年 12 月 02 日 一条评论

    今天在做项目的时候要用到一个验证码程序!从CI的手册上看了下,找不到很好的资料,在CI 的论坛上找了几个 但是运行起来都是有点问题的!有些是不能显示的,有些是报错的!都是人家写的代码,不知道如何入手去修改那些错误的地方!还有些就是能够显示的,但是效果不是我想要的!在之前学习TP的时候 感觉TP的验证码做的不错!而且效果蛮不错的!最主要的是功能还是蛮强大的!支持中英文和各种样式的验证码生成!于是扔掉了从论坛上DOWN下来的所有验证码程序,自己把TP的整个验证码程序移植过来了!整合了一下,把所有的代码写在了一个类文件(Image.php)中,当然在移植的过程中修改了不少的东西,但是主要的效果和原理还是不变!主要是为了能够适应CI的环境!
    首先在Image.php文件中主要的有两个函数,其中的buildImageVerify()函数使用来生成英文 和数字的验证码的。还有一个函数buildGbVerify()是用来生成中文的验证码的!不用管这两个函数是怎么运行的!我们只要把这个文件(Image.php)放在我们项目或者是系统libraries文件夹中,然后在我们的控制器中调用就可以了!如:

               //验证码的实现1
		public function authCode () {  
			$this->load->plugin('captcha');
			$cap = create_captcha(array(        
				'img_width'	 => 80,
				'img_height' => 25,
				'word_length' => 5
			));  
		}
		//验证码实现2
		public function auth()
		{
			$type = isset($_GET['type'])?$_GET['type']:'gif';
			$this->load->library('image');
			Image::buildImageVerify(4,1,$type);    //输出英文,数字验证码
			Image::buildGbVerify(4,$type,'120','50','system\fonts\simhei.ttf');    //输出汉字验证码
			//echo $thid->session->userdata('check');       //输出验证码中的字符串
		}

首先第一个是采用的系统自带的验证码,不过样式不怎么好看,我个人感觉哈,所以就PASS了,
第二个是自己整理的出来的。首先得加载验证码的类文件,然后分别调用不同的方法 ,来显示不同样式的验证码!
其中要说名一点是,在调用汉字的验证码是,必须要指定字体的路径,相对index.php文件来说的。(我试了很多字体 好像只有这个字体可以正常显示啊!)
我们要想在视图中调用的话,直接这样子写:

<body>
<SCRIPT>
	function freshcheck () {		//重载验证码
		var timenow = new Date().getTime();
		document.getElementById("checkimg").src="<?php echo base_url().'index/auth/';?>"+timenow;
	}
</SCRIPT>
<img id="checkimg" src=<?php echo site_url('index/auth');?> align="middle" title="点击刷新" onclick="javascript:freshcheck();"/>
</body>

这样子以来在视图页面显示验证码和实现局部刷新验证码的功能就算OVER了!

Tags: CI PHP

发表评论

电子邮件地址不会被公开。 必填项已用*标注


*

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>