PHP制作简单的验证码验证
什么是验证码❓
验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。
制作简单的前端样式,表单和验证码判断(后端)
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><form method="post" action="">验证码:<input type="text" size="10" name="a"/><img src="next1.php"/> //跳转到后端的图像<input type="submit" name="submit" value="提交"/></form></body><?phpsession_start(); //启动绘画if(isset($_POST["submit"])){$user=$_SESSION['string'];//服务器临时保存yzm$str=$_POST["a"];if(strcasecmp($str,$user)==0) //比较 等于0 两个值就为相等echo "<script>alert('验证码正确!!!');</script>";// echo '验证码正确';else// echo '验证码有误';echo "<script>alert('你的验证有误,请重新输入!');</script>";}?>
</html>
验证码生成的后端代码
<?phpsession_start(); header('Content-type: image/gif'); $image_w=100; $image_h=25;$number=range(0,9); $character=range("Z","A"); $result=array_merge($number,$character); /*array_merge函数是将两个数组按先后的顺序合并到一起,合并到一起组成一个新的数组*/$string=""; $len=count($result); for($i=0;$i<4;$i++){$new_number[$i]=$result[rand(0,$len-1)];$string=$string.$new_number[$i];}$_SESSION['string']=$string; $check_image=imagecreatetruecolor($image_w,$image_h); /*创建一个画布,使用PHP的GD Library创建新的真彩色图像,函数返回图像资源标识符*/$white=imagecolorallocate($check_image, 255, 255, 255); // 设置白色的图形$black=imagecolorallocate($check_image, 0, 0, 0); // 设置黑色的图形 imagefill($check_image,0,0,$white);/*imagefill()函数在 image 图像的坐标x,y (图像左上角为0, 0) 处用 color 颜色执行区域填充*/for($i=0;$i<100;$i++){imagesetpixel($check_image, rand(0,$image_w), rand(0,$image_h),$black);/*设置干扰,使用 imagesetpixel()函数给图片添加干扰点。*/}for($i=0;$i<count($new_number);$i++){$x=mt_rand(1,8)+$image_w*$i/4; /*该函数是产生随机值的更好选择,返回结果的速度是 rand() 函数的 4 倍 */$y=mt_rand(1,$image_h/4); //指定生成位置X、Y轴偏移量$color=imagecolorallocate($check_image,mt_rand(0,200),mt_rand(0,200),mt_rand(0,200));imagestring($check_image,5,$x,$y,$new_number[$i],$color);/*imagestring()函数是PHP中的内置函数,用于水平绘制字符串。此函数在给定位置绘制字符串*/}imagepng($check_image);//以PNG格式将图像输出到浏览器或文件imagedestroy($check_image);
?>
运行结果
验证效果的演示
遇到的问题
当设置 header('Content-type: image/gif'); 直接运行后端验证码图片
当设置 header('Content_type: image/gif'); 直接运行后端验证码图片
可以检测报错
乱码是因为头文件
但运行前端代码还是可以生效
同时还要注意php的版本
避免出现以下情况
解决办法
进入php.ini 找到extension=php_gd2.dll ,将其前面的 ‘;’ 去掉即可
PHP制作简单的验证码验证相关推荐
- python编写一个登陆验证程序_用python实现一个简单的验证码
我们经常在登录一个网站,或者注册的时候需要输入一个验证码,有时候觉得很烦,因为有些验证码不仅复杂还看不清,许多用户就会因为这些而懒得再登录或者注册之类的. 既然验证码会造成流失用户的风险,为什么大家都 ...
- 用python写一个程序来验证每个数字的生成概率是否相同_Python实现简单生成验证码功能【基于random模块】...
本文实例讲述了Python实现简单生成验证码功能.分享给大家供大家参考,具体如下: 验证码一般用来验证登陆.交易等行为,减少对端为机器操作的概率,python中可以使用random模块,char()内 ...
- java验证码功能一般怎么做的_java制作简单验证码功能
本文实例为大家分享了java制作简单验证码的具体代码,供大家参考,具体内容如下 在这里我们需要用到java的画笔工具,所以我们需要导入以下包 import="java.util.*,java ...
- 控制器制作简单验证码和汉字验证码
@Controller @RequestMapping("imageCode") public class ImageCodeController {Color getRandCo ...
- ps2019验证码验证失败_验证产品创意之旅2019
ps2019验证码验证失败 By reading about validating product ideas and starting small businesses I got excited ...
- 使用Tensorflow构建和训练自己的CNN来做简单的验证码识别
Tensorflow是目前最流行的深度学习框架,我们可以用它来搭建自己的卷积神经网络并训练自己的分类器,本文介绍怎样使用Tensorflow构建自己的CNN,怎样训练用于简单的验证码识别的分类器.本文 ...
- ThinkPHP简单的验证码实现
ThinkPHP简单的验证码实现 写一个最简单的TP验证码. 写Controller 首先在Controller/IndexController.class.php(简称Index)文件中编辑: 1 ...
- python身份证号掩盖出生日期的代码_利用Python制作全国身份证号验证及查询系统!就问你吊不吊!...
大家好哇,又是一个愉快的周末,今天本鸟给大家分享1个有趣的实战项目,用python制作"全国身份证号验证及查询系统",成品界面如下图: 本系统可以实现身份证号真伪验证,年龄.性别及 ...
- 浙大python读者验证码_Python实现简单生成验证码功能【基于random模块】
本文实例讲述了Python实现简单生成验证码功能.分享给大家供大家参考,具体如下: 验证码一般用来验证登陆.交易等行为,减少对端为机器操作的概率,python中可以使用random模块,char()内 ...
最新文章
- 这是我看过,最好懂的神经网络
- 全球市值最大公司的巨变:20年,已是沧海桑田
- Nginx 配置实战:负载均衡的实现
- linux添加怎么退出,linux – 是否可以设置’expect’的退出代码
- windows mysql主主配置_基于docker MySQL数据库主主同步配置(windows上)
- jquery基本操作笔记
- android Notification的使用
- 收藏 | 人人都能看懂的LSTM介绍及反向传播算法推导
- 没有理想的人不会伤心,不想做程序猿,没目标,不知道自己还能干嘛呢
- Keil5.15版本号
- 格式化输出%与format
- unity把场景和动画生成xml
- python与anaconda安装
- Aqua Data Studio v19.0 安装使用
- 中国装配式模块化建筑(PPVC)行业发展趋势前瞻与十四五战略规划研究报告2022年版
- 使用think_queue实现未支付订单半小时取消
- vscode输入特殊符号
- 聚类时的轮廓系数评价和inertia_
- 御坂坂的c++学习之路(4)
- 计算机驱动安装的几个方法,不会安装驱动有福了,2个方法教你安装驱动程序,非常实用的知识...