Home > php教程 > php手册 > body text

php验证码实现及使用

WBOY
Release: 2016-06-06 19:44:39
Original
1049 people have browsed it

又迎来了七夕!昨晚实现了这个程序的基本功能,今天中午完善了一下。唯一遗憾的是闹钟没有叫醒我,所以,没有看到流星雨!那么就用这个代码来作为补偿吧! 第一次写技术博客,一来可以供以后复习,而来在理一下自己的思路。看到的哥们还请不吝赐教啊!^_^ 验

又迎来了七夕!昨晚实现了这个程序的基本功能,今天中午完善了一下。唯一遗憾的是闹钟没有叫醒我,所以,没有看到流星雨!那么就用这个代码来作为补偿吧!php验证码实现及使用第一次写技术博客,一来可以供以后复习,而来在理一下自己的思路。看到的哥们还请不吝赐教啊!^_^

 

验证码的特点:

1)可以随机显示字符

2)按照自己喜欢的方式确定显示的验证码类型(0-只显示数字,1-显示小写字母和数字,2-显示数字、大小写字母)

3)可以设置自己要求的显示大小

4)可以添加干扰线和干扰点

 

实现步骤

第一步:实现随机生成一个指定字符个数的验证码函数getCode()

 /**
  * 功能:随机生成一个验证码函数
  * @param $code_len 验证码显示的字符个数
  * @param $type 验证码类型(默认 0-全为数字, 1-小写字母和数字,2-小写、大写、数字组成)
  * @author MaChaoHui<mchgloak11520>
  * */
  
 function getCode( $code_len, $type = 2 ){
   $str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
  $type_pos = array( 9, 35, strlen($str)-1 ); //类型位置定界
  
  //随机产生验证码内容
  $content = '';
  for( $i=0; $i
<p> </p>
<p>此时在浏览器中的效果为:</p>
<p><img  src="/inc/test.jsp?url=http%3A%2F%2Fimg.blog.csdn.net%2F20130813130530250%3Fwatermark%2F2%2Ftext%2FaHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTExODAxNA%3D%3D%2Ffont%2F5a6L5L2T%2Ffontsize%2F400%2Ffill%2FI0JBQkFCMA%3D%3D%2Fdissolve%2F70%2Fgravity%2FCenter&refer=http%3A%2F%2Fblog.csdn.net%2Fu011118014%2Farticle%2Fdetails%2F9946279" alt="php验证码实现及使用" ></p>
<p>第二步:绘制验证码背景。</p>
<p>我们知道PHP的GD库绘图有几个步骤:1)绘制一个画布、分配背景颜色;2)绘图;3)输出图像;4)销毁画布(释放内存)。所以接下来就是按照这几个步骤来绘制验证码。</p>
<p>1)绘制画布、分配背景颜色(imagecreatetruecolor( $width, $height );函数)</p>
<pre class="brush:php;toolbar:false">$width = $code_len * 20;
  $height = 30;
  $im = imagecreatetruecolor( $width, $height );
 
$bg = imagecolorallocate( $im, 200, 200, 200 );
 
//2)绘制背景
  imagefill( $im, 0, 0, $bg );
 
//3). 输出图像
  header("Content-Type:image/png");  //设置响应头信息
  imagepng( $im );      
  
  //4). 销毁画布(释放内存)
  imagedestroy( $im ); 
Copy after login


 

 

此时实现的效果为:

php验证码实现及使用

第三步:绘制验证码字体。

核心代码:

//绘制验证码内容(一个个字符绘制)
  for( $i=0; $i
<p> </p>
<p>此时效果为:</p>
<p><img  src="/inc/test.jsp?url=http%3A%2F%2Fimg.blog.csdn.net%2F20130813131709859%3Fwatermark%2F2%2Ftext%2FaHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTExODAxNA%3D%3D%2Ffont%2F5a6L5L2T%2Ffontsize%2F400%2Ffill%2FI0JBQkFCMA%3D%3D%2Fdissolve%2F70%2Fgravity%2FCenter&refer=http%3A%2F%2Fblog.csdn.net%2Fu011118014%2Farticle%2Fdetails%2F9946279" alt="php验证码实现及使用" ></p>
<p>可见,没有干扰线和干扰点也没有边框,不是很好看。所以接下来添加这几个。</p>
<p> </p>
<p>第四步:添加干扰线、干扰点和边框。</p>
<p>核心代码:</p>
<pre class="brush:php;toolbar:false">//绘制边框
  imagerectangle($im, 0, 0, $width-1, $height-1, $color[rand(0, 4)]);
  //随机添加干扰点
  for( $i=0; $i
<p><br>
 </p>
<p> </p>
<p> </p>
<p>使用:</p>
<pre class="brush:php;toolbar:false">
Copy after login


php验证码实现及使用

 

 

此时效果:

php验证码实现及使用

 

 

 

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!