PHP晋级:三步实现验证码类的设计,先收藏留着以后用!
验证码的作用?
验证码是随机产生的数字和符号,动态生成的一幅图,或者在图片上加上一些干扰信息。验证码一般在表单提交时使用(网站用户注册、登录、论坛发帖时),只有审核成功后才能使用某项功能。验证码可以防止机器恶意注册从而避免严重耗费系统资源,降低网站性能影响正常的用户体验。另外验证码可以确保当前访问者是一个人而非机器。今天问大家介绍一下php用类实现验证码验证。
第一步:用类设计验证码
1、首先要声明一个类,并通过面向对象的特征把实现验证码的细节封装在这个类中。我们要创建一个宽度60像素,高度为20像素,四个数字组成。
声明类的名称是Validationcode,设置了验证码的宽度($width)、高度($height;)、个数($codeNum)、验证码字符($checkCode)、画布($image),并把成员属性width、height、codeNum、checkCode初始化,设置验证码个数是4。
2、创建向浏览器输出图像的方法showImage(),并调用内部getCreateImage()方法创建画布,outputText()方法调用随机字符串,outputImage()方法生成图像并输出。 getcheckCode()访问该方法获取随机创建的验证码字符串。getCreateImage ()该方法是创建图像,初始化背景。代码如下图:
3、通过 createCheckCode()方法生成四个数字字符串,$rand_number=rand(48,57)表示生成数字。通过for循环实现生成4个数字字符串。outputText()方法是随机颜色、随机摆放、随机字符串向图像输出。代码如下图:
4、outputImage()方法自动检测PHP中GD支持的图像类型,并输出图像,通过if..elseif..else语句来判断生成的GIF、JPG、PNG、WBMP格式图像是否存在,如果没有支持的图像类型,会输出错误消息并推出程序。__destruct()方法是对象结束之前销毁图像资源释放内存。代码如下:
第二步:验证码类的实例对象
创建验证码类的对象,从验证码对象中获取生成验证码图片,发送到浏览器中。接着从验证码对象获取字符串,使用session保留字符串在服务器中。session_start();开启SESSION,$image=new Validationcode(60,20,4);创建验证码类的对象,$image->showImage();调用方法向浏览器发送图片,$_SESSION['validationcade']=$image->getcheckCode();把字符串保留在服务器中。代码如下:
第三步:表单验证
包括用户输入表单和匹配验证码部分。在表单中输出动态获取的验证码图片,单击重新动态获取另一张验证码图片(通过js函数和单击事件完成)。客户端接受的验证和服务器上保留的验证码相同,则提示成功,否则会提示错误。代码如下:
运行结果如下
最后给大家留一个作业,还可以加上验证码图像干扰和数字字母结合的功能,感兴趣的读者可以自己试试,要上面源码私我!关于“php用类实现验证码功能”先聊到这。每天学习一个知识点,每日寄语”只要今天的你优于昨天的你,便是最大的成功”如转载请标注出处。