php实现验证码制作
验证码分为:数字验证码,字母验证码,数字加字母验证码,图片验证码,汉子验证码,视频验证码等!由于原理相同,且根据平时的使用范围来看,今天在这里只讲数字验证码,字母验证码,数字加字母验证码。下面是由本站小编为大家整理的php实现验证码制作,喜欢的可以收藏一下!了解更多详情资讯,请关注应届毕业生考试网!
首先,看一张图了解验证码生成的过程。
(1)生成验证码底图
(2)验证码内容
(3)生成验证码
(4)对比校验
验证码实现的核心技术分析
(a)底图的`实现,并添加干扰元素
(b)生成验证内容
(c)验证内容保存在服务端
(d)验证内容的校验
下面看代码实现的过程
<?php
/*
这段代码 实现了产生 随机数字,随机数字+字母验证码
*/
session_start();
$image = imagecreatetruecolor(100, 30);
//imagecreatetruecolor() 返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的黑色图像。
$bgcolor = imagecolorallocate($image, 255, 255, 255);
// imagecolorallocate — 为一幅图像分配颜色
imagefill($image,0,0,$bgcolor);
/* 生成字母验证码
for($i=0;$i<4;$i++)
{
$fontsize = 6;
// $fontcolor = imagecolorallocate($image, 0, 0, 0);
$fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
$fontcontent =rand(0,9);
$x = ($i*100/4) + rand(5,10);
$y = rand(5,10);
// imagestring — 水平地画一行字符串
imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}
*/
// 生成字母加数字的随机验证码
$captcha_code = "";
for($i=0;$i<4;++$i)
{
$fontsize = 6;
$fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
$data = "abcdefghijklmnopqrstuvwxtz123456789";
$fontcontent = substr($data,rand(0,strlen($data)),1);
$captcha_code.=$fontcontent;
$x = ($i*100/4) + rand(5,10);
$y = rand(5,10);
imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}
$_SESSION['authcode']=$captcha_code;
// 给验证码添加点干扰项
for($i=0;$i<200;$i++)
{
$pointcolor = imagecolorallocate($image, rand(50,200), rand(50,200), rand(50,200));
imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor);
// bool imagesetpixel ( resource $image , int $x , int $y , int $color );
// imagesetpixel() 在 image 图像中用 color 颜色在 x,y 坐标(图像左上角为 0,0)上画一个点。
}
// 增加线的干扰
for($i=0;$i<3;++$i)
{
$linecolor = imagecolorallocate($image, rand(80,220), rand(80,220), rand(80,220));
imageline($image, rand(1,99), rand(1,29), rand(1,99), rand(1,29), $linecolor);
}
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>
-
php empty()和isset()的区别
在使用php编写页面程序时,经常使用变量处理函数判断php页面尾部参数的某个变量值是否为空,开始的时候我习惯了使用empty()函数,却发现了一些问题,因此改用isset()函数,问题不再。今天,小编为大家搜索整理了phpempty()和isset()的区别,希望大家能有所收获,更多精彩内容...
-
PHP编程常用技巧四则
PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。下面就来和小编一起看看PHP编程常用技巧四则吧。1.配置PHP文件目录作为服务器端解释执行的脚本语言,PHP程序放置在某个服务器可以访问的目录下,一般可以通过修改Apache的进行配置,例如我们在该文件中的一句:Ali...
-
用PHP读取文件的正确方法
处理诸如PHP之类的现代编程语言的乐趣之一就是有大量的选项可用。PHP可以轻松地赢得Perl的座右铭There‘smorethanonewaytodoit(并非只有一种方法可做这件事),尤其是在文件处理上。但是在这么多可用的选项中,哪一种是完成作业的最佳工具?当然,实际答案取决于...
-
PHP是否是最好的语言
最近被朋友们拉入了几个技术社群,有微信群,也有QQ群,尤其对一些年轻的朋友,大家乐此不疲的问题居然是PHP是最好的语言么?我们推崇敢于质疑且独立思考的自由精神,所以对PHP是最好的语言么?这一问题,也是从疑问开始的。什么是最好?《现代汉语词典(第5版)》第1823页对最...