网站首页  词典首页

请输入您要查询的论文:

 

标题 PHP+AJAX实现验证码无刷新验证
范文

     席东

    

    摘要:验证码对大家来说应该不会陌生,诸如登录账号、发表评论等操作,网站一般都会要求用户输入验证码。那么验证码在网站中起了什么作用呢?当我们在制作网站时如何添加验证码功能呢?下面就验证码的功能、如何使用PHP生成验证码、如何实现无刷新局部更新进行介绍。

    关键词:验证码;PHP;AJAX;SESSION

    中图分类号:TP393 文献标识码:A

    文章编号:1009-3044(2019)32-0053-02

    1什么是验证码

    验证码(CAPTCHA)是“Completely Automated Public Turingtest to tell Computers and Humans Apart”(全自動区分计算机和人类的图灵测试)的缩写。它是一种能够区分用户是计算机还是人类的程序。

    验证码能够对暴力破解密码、无限刷票、论坛灌水等操作进行有效防止,当前很多网站基础都会使用验证码。简单来说验证码是一个由计算机自动生成的问题,问题回答的是否正确由计算机自动评判。一般来说验证码所表达的问题只有人类才能解答,而计算机是无法解答这个的问题,于是可以得出不能正确回答验证码问题的用户,就不是合法用户,对这些用户做出限制,就可以避免很多恶意情况的发生。

    验证码的种类有很多,有的是一张图片,图片上有数字,字符、汉字、运算式等信息;有的是多张图片需要用户根据要求进行选择;有的需要用户使用鼠标拖动完成验证。向网站进行数据请求时,用户需要识别图片上的内容,然后网站会检查用户输入的验证码与系统生成的验证码是否一致,如一致则认为这次访问网站的请求是一个正常的操作,如验证码不一致,网站则会拒绝此次请求。

    验证码可有效防止一些恶意攻击,对于提升网站的安全性、可服务性有重要意义。

    2在网站中添加验证码

    PHP语言是一种常用的动态网站编程语言,如何使用PHP语言生成验证码呢?

    2.1创建验证码

    1)使用imagecreatetruecolor函数生成指定规格的图片

    imagecreatetruecolor(int $width,int $height)

    imagecreatetruecolor()如果执行成功,会返回一个图像标识符,代表了一幅大小为x_size和y_size的黑色图像,该函数第一个参数是图像的宽度,第二个参数是图像的高,单位为像素,如执行失败返回FALSE。

    2)使用ImageColorAllocate函数为图像分配颜色

    imagecolorallocate(resource $image,int $red,int $green,int$blue)

    imagecolorallocate()执行成功后,返回一个标识符,代表由给定的RGB成分组成的颜色。该函数的$image参数是一个图像标识符,$red,$green和$blue分别是所需要的颜色的红,绿,蓝成分,颜色参数是0到255的整数或者十六进制的Ox00到OxFF。如执行失败则返回-1。

    如果需要可以使用rand()和mt_rand()函数生成随机颜色,如:

    $rand_color=ImageColorAllocate($im,rand(0,255),rand(0,255),rand(0,255))

    3)使用ImageFill函数填充图片的背景色

    imagefill(resource$image,int$x,int$y,int$color)

    imagefill()函数在image图像的坐标x,y处使用color所代表的颜色,执行区域填充。如执行成功返回TRUE,执行失败返回FALSE。

    4)使用mt_rand函数生成随机数字

    mt_rand(int$min,int$max)

    mt_rand()函数如果执行成功,会返回一个在min与max(包含这个值)之间的随机整数。

    5)使用ImageString函数在指定图像上水平画一行字符串

    imagestring(resource $image,int $font,int $x,int $y,string $s,int$col)

    imagestring()函数执行成功,会使用由col指定的颜色将字符串s画到image所代表的图像的x,y坐标处,如果font是1,2,3,4或5,则会使用内置字体,当然也可以使用自定义字体,只需加载指定的字体集(ttf)文件即可。

    在这里,可以进行多种变形,可以分别将两个随机数字的数学运算式显示到图片上,还可以随机生成几个文字或字符显示到图片上等,用来增加机器识别验证码的难度。

    2.2将验证码的答案保存到SESSION

    WEB服务器向本地浏览器传输信息时使用的是HTYP协议,它是一种无状态(stateless)协议,即HTTP协议自身不能对通信的信息进行保存。HTTP协议不能保留之前一切的请求或响应报文的信息,那么应如何保存验证码的信息呢?

    Session又称为会话控制,Session能够存储用户访问WEB服务器时生成的相关数据。当用户在应用程序的Web页面之间跳转时,存储在Session对象中的数据就不会丢失,直到访问WEB服务器的会话结束。

    将PHP生成的验证码结果保存到SESSION后,在会话结束前可以随时读取SESSION中的验证码,用来与用户提交的验证码进行比较。

    首先使用session_start()函数,启动一个新会话。

    然后将生成的随机数保存到SESSION关联数组中。

    4如何在不刷新网页的前提下刷新验证码

    在访问网站时,如果用户看不清楚验证码图片中的内容,就需要重新得到新的验证码图片。这时如果刷新整个页面能够刷新出新的验证码图片,但是页面中其他内容也会被刷新,这会给用户带来较差的体验。

    如果能够只刷新验证码图片,而不影响页面中其他元素,将会大大提升网页的友好性及用户体验。

    5总结

    为了防止非法用户利用计算机自动批量注册、发表评论、对特定账号进行暴力破解等行为,验证码技术应运而生,验证码一般是一个混合了数字或符号的图片,并且验证码图片可能会含有干扰信息(能够增加机器识别的难度)。每次请求时均需要进行验证码验证,这将有效防止有人恶意、暴力攻击。用户在识别验证码时,会占用一些时间,这也能够起到减轻服务器压力的作用。

    随着图片识别技术的不断发展,图片上的信息也逐渐可以被计算机程序识别,于是验证码技术也在不断进步,不断完善,也将变得更加复杂。

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2024/12/23 4:06:57