1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP生成一个简单的验证码图片

作者:用户 来源:互联网 时间:2017-11-30 10:37:23

php图片验证简单生成一个

PHP生成一个简单的验证码图片 - 摘要: 本文讲的是PHP生成一个简单的验证码图片, 解决问题:用PHP做一个简单的验证码; 说明:我本身是一个前端,工作久了之后发现要是不掌握一门后端开发语言的话,会有一种无力感。最近在边做自己的个人网站边学习php,在写登录注册的时候,为了防止暴力注册或者暴力破解,需要完成一个简单的验

解决问题:用PHP做一个简单的验证码;

说明:我本身是一个前端,工作久了之后发现要是不掌握一门后端开发语言的话,会有一种无力感。最近在边做自己的个人网站边学习php,在写登录注册的时候,为了防止暴力注册或者暴力破解,需要完成一个简单的验证码验证流程。于是就自己写了一个生成验证码的小接口,希望对需要的人有所帮助。

代码如下:代码里面的注释包含了我在写这段生成验证码代码的时候的,一些心路历程,想了一下没有删掉,反正不影响运行结果!
<?php	/* date:2017-09-04,	 * 功能:实现验证码,	 * 补充:目前只是简单说明了一些绘制图片的一些常用的方法,具体的验证码功能等待继续完善	 */	/*使用GD的imagecreatetruecolor();创建一张背景图	 * imagecreatetruecolor()新建一个真彩色图像,代表了一副大小为x_size和y_size的黑色图像	 * 参数两个,分别是imagecreatetruecolor ( int $width , int $height ),图像宽度和图像高度	 * 返回值:成功后返回图像资源,失败后返回false	 * 默认生成黑色背景	 */	$image=imagecreatetruecolor(200,60);		/* imagecolorallocate ( resource $image , int $red , int $green , int $blue )	 * imagecolorallocate() 返回一个标识符,代表了由给定的 RGB 成分组成的颜色。red,green 和 blue 分别是所需要的颜色的红,绿,蓝成分。这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xFF。imagecolorallocate() 必须被调用以创建每一种用在 image 所代表的图像中的颜色。 	 * 如果分配失败则返回 -1。 	 * 这里提到另外一个函数	 * imagecolorallocatealpha() 的行为和 imagecolorallocate() 相同,但多了一个额外的透明度参数 alpha,其值从 0 到 127。0 表示完全不透明,127 表示完全透明。 如果分配失败则返回 FALSE。 	  */	//生成填充色,该实例是红色(填充成为img的背景颜色,即底色。这是我开始的错误理解,这里只不过是制造了一种颜色而已)	$bgcolor=imagecolorallocate($image,255,0,0);	//白色	$white=imagecolorallocate($image,255,255,255);	//绿色	$green=imagecolorallocate($image,0,255,0);	//蓝色	$blue=imagecolorallocate($image,0,0,255);		/*bool imagefill ( resource $image , int $x , int $y , int $color )	 * imagefill() 在 image 图像的坐标 x,y(图像左上角为 0, 0)处用 color 颜色执行区域填充(即与 x, y 点颜色相同且相邻的点都会被填充)。	 * 暂时没有发现设置x,y有什么用	 */		//将填充色填充到背景图上---现在我认为应该说成是用什么颜色作为图片的背景颜色(填充色)	imagefill($image,0,0,$blue);		/*mt_rand — 生成更好的随机数	 * 很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 » Mersenne Twister 中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。 	 * int mt_rand ( int $min , int $max )	 * 参数min可选的、返回的最小值(默认:0) 	 * max可选的、返回的最大值(默认:mt_getrandmax()) 	 */	$num=mt_rand(1000, 9999);		/*	 * 将生成的数字存到session里面,便于之后对验证码进行验证	 * 	 * */	session_start();	$_SESSION['vercode']=$num;		/*	 * bool imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col )	 * imagestring() 用 col 颜色将字符串 s 画到 image 所代表的图像的 x,y 坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0)。如果 font 是 1,2,3,4 或 5,则使用内置字体。 	 */		//这个才是最重要的方法	imagestring($image,100,30,3,$num,$white);		//显示图片的时候要声明头信息	header("Content-type:image/png");		//在使用这个方法之前,一定要先设置头信息,否则不会正常的显示图片 	imagepng($image);		//释放资源,销毁执行对象,适时的释放资源会减轻对服务器请求的压力。 	imagedestroy($image);?>
图简单的话前端可以直接在html页面用img标签引入,src路径指向上面的php文件就可以了。举个小例子:<img src="api/verifyCode.php" alt="验证码" />,src路径自己改啊!!!因为本人不是专业的php开发,如果有大神看到了,有更好的办法,请指点一下,菜鸡的我谢过!

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php , 图片 , 验证 , 简单 , 生成 一个 ,以便于您获取更多的相关知识。