加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php源码之生成图片验证码的实例

发布时间:2020-05-25 02:14:36 所属栏目:PHP 来源:互联网
导读:如今,所有的网站系统基本上都有验证码功能,可以说是无处不在了,本文章向大家介绍一款php生成图片验证码源码,需要的朋友可以参考一下。

实现验证码的基础

GDI+graphics device interface plus的缩写,即图形设备接口。GDI+为开发者提供了一组实现与各种设备(具有图形化能力但不涉及图形细节的设备)进行交互的库函数。C#通过Bitmap类创建位图对象、Grephics类创建画板对象,再通过Pen类、Brush类、Color类等画位图:

Point结构在二维平面中 定义点坐标的有序对。常用于定义 窗体或控件位置、其他图形(线条/矩形等)边界。

创建:Point p = new Point(30,90);

IsEmpty属性检测Point结构是否为空。

Size结构存储有序整数对。常用于定义 窗体、空间呵其他矩形区域的大小。第一个构造函数接受一个Point结构:

Point p = new Point(30,90);

Size s = new Size(p);

第二个构造函数接受二个int值:

Size s = new Size(30,90);

主要属性:Whdtn、hight、isEmpty

Rectangle结构存储四个整数(表矩形位置和大小)。由一个定义左上角的Point结构 和 一个定义大小的Size结构 组成。

主要属性:Location 左上角坐标、Size 矩形大小、Height/Width 矩形高宽、Left/Right左右边x坐标、Top/Bottom 上下边y坐标、isEmpty

实现验证码主要语法:

位图对象Bitmap bmp = new Bitmap(120,32);

画板对象Graphics gp = Graphics.FromImage(bmp);

画板背景色gp.Clear(Color.Silver); 默认为black

起点对象Point p1 = new Point(0,4);

画笔对象Pen p = new Pen(Color.Red);

画刷颜色Brush s = Brushes.Red;

文字对象string code = "";

文字保存到会话中Session["checkcode"] = code;

画板绘制文字gp.DrawString(code,new Font("楷体",14),s,p1);(内容,字体,颜色,起点坐标)

位图输出到页面bmp.Save(Response.OutputStream,ImageFormat.Gif);

php图片验证码的实现

/**

* vCode(m,n,x,y) m个数字 显示大小为n 边宽x 边高y

* 自己改写记录session $code

*/

session_start();

vCode(4,15); //4个数字,显示大小为15

function vCode($num = 4,$size = 20,$width = 0,$height = 0) {

!$width && $width = $num * $size * 4 / 5 + 5;

!$height && $height = $size + 10;

// 去掉了 0 1 O l 等

$str = "23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW";

$code = '';

for ($i = 0; $i < $num; $i++) {

$code .= $str[mt_rand(0,strlen($str)-1)];

}

// 画图像

$im = imagecreatetruecolor($width,$height);

// 定义要用到的颜色

/* http://www.manongjc.com */

$back_color = imagecolorallocate($im,235,236,237);

$boer_color = imagecolorallocate($im,118,151,199);

$text_color = imagecolorallocate($im,mt_rand(0,200),120),120));

// 画背景

imagefilledrectangle($im,$width,$height,$back_color);

// 画边框

imagerectangle($im,$width-1,$height-1,$boer_color);

// 画干扰线

for($i = 0;$i < 5;$i++) {

$font_color = imagecolorallocate($im,255),255));

imagearc($im,mt_rand(- $width,$width),mt_rand(- $height,$height),mt_rand(30,$width * 2),mt_rand(20,$height * 2),360),$font_color);

}

// 画干扰点

for($i = 0;$i < 50;$i++) {

$font_color = imagecolorallocate($im,255));

imagesetpixel($im,$font_color);

}

// 画验证码

@imagefttext($im,$size,5,$size + 3,$text_color,'c:WINDOWSFontssimsun.ttc',$code);

$_SESSION["VerifyCode"]=$code;

header("Cache-Control: max-age=1,s-maxage=1,no-cache,must-revalidate");

header("Content-type: image/png;charset=gb2312");

imagepng($im);

imagedestroy($im);

}

?>

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读