项目结构:

提交表单:

校验正确:

校验错误:

===========================================================

代码部分:

===========================================================

yanzhengma.php

 1 <?php
 2 //验证码的制作
 3 //1.生成4位的随机数
 4 for($i=0;$i<4;$i++){
 5     $rand.=dechex(rand(1, 15));
 6 }
 7
 8 //2.创建图片
 9 //创建一张图片
10 $image=imagecreatetruecolor(100, 30);
11 //背景颜色
12 $bg=imagecolorallocate($image, 0, 0, 0);
13 $te=imagecolorallocate($image, 255,255,255);
14
15
16 //划线
17 for($i=0;$i<4;$i++){
18     $lineColor=imagecolorallocate($image, rand(20, 225), rand(20, 225), rand(20, 225));
19     imageline($image, rand(0, 100), 0, 100,30, $lineColor);
20 }
21 //划点
22 for($i=0;$i<200;$i++){
23     imagesetpixel($image, rand()%100, rand()%100, $lineColor);
24 }
25 //添加文字
26 //编码转换
27 $str=iconv("GBK", "UTF-8", "广州GZ");
28 imagettftext($image, 12,11, 20, 20, $lineColor, 'simhei.ttf', $str);
29
30 //3.随机数写入图片$font=(1~6)
31 imagestring($image, rand(3, 6), rand(3, 70), rand(0, 16), $rand, $te);
32
33 //4.随机数保存在session中
34 //启动session
35 session_start();
36 //把验证码放入session
37 $_SESSION[vilidationCode]=$rand;
38
39
40 header("Content-type: image/jpeg");
41 imagejpeg($image);
42 ?>

form.php

 1 <?php
 2
 3 session_start();
 4
 5 if($_POST[yanzhengma]){
 6
 7     if($_POST[yanzhengma]==$_SESSION[vilidationCode]){
 8         echo "你通过了验证!";
 9     }else{
10         echo "你输入的验证码错误!";
11     }
12 }
13 ?>
14 <form action="" method="post"><img src="yanzhengma.php"><br />
15 <input type="text" name="yanzhengma" /><br />
16 <input type="submit" value="submit" /></form>

注意啦:
在项目结构中的COURBD.TTF和simhei.ttf这两个是字体库

大家可以在自己电脑:C:\WINDOWS\Fonts 目录中找到

(大多数在这里,部分同志可能安装在其他目录,T_T)。

测试了一下下面的代码:

1 //添加文字
2 //编码转换
3 $str=iconv("GBK", "UTF-8", "广州GZ");
4 imagettftext($image, 12,11, 20, 20, $lineColor, 'simhei.ttf', $str);

可以显示中文,但是如果是下面的代码:

1 //添加文字
2 //编码转换
3 $str=iconv("GBK", "UTF-8", "广州GZ");
4 imagettftext($image, 12,11, 20, 20, $lineColor, 'COURBD.TTF', $str);

这时候,中文就不能显示啦,所以大家在使用字体库的时候还是要注意的!!

php开发_图片验证码相关推荐

  1. java自动识别图片验证码插件_JMeter开发插件——图片验证码识别

    我们在性能测试中总会时不时地遭遇到来自于应用系统的各种阻碍,图片验证码就是一类最常见的束缚,登录或交易时需要按照图片中的内容输入正确的验证信息后,数据才可以提交成功,这使得许多性能测试工具只能望而却步 ...

  2. 使用.Net Core 2.1开发Captcha图片验证码服务

    更新后续篇:Captcha服务(后续1) 使用.Net Core 2.1开发Captcha验证码服务 开发工具:Visual Studio 2017 15.7.3 开发平台:64位 Windows 1 ...

  3. Shiro安全框架(Shiro与SpringBoot整合开发)之图片验证码(五)

    这篇博文主要讲解实现图片验证码的实现,之前已经将权限,认证,自带缓存,redis缓存,都实现了,现在我们就来了解一下简单的图片验证码的实现: 首先,我们要来修改一下登录的页面,login.jsp这个页 ...

  4. java如何缓存验证码图片_图片验证码概述及实现步骤

    一. 图片验证码概述: 很多网站都有该实现 作用: 为了提高系统的安全性 有了验证码,我们就可以要求用户在输入用户名,密码等信息后,同时输入图片上的文字,用户提交后,系统会首先从session中提取刚 ...

  5. android 验证码图片识别_图片验证码的识别技术

    这里有最简单的一类验证码:他们有固定的背景颜色,相同的字符颜色和字体,字符的坐标位置也是固定的. 对于这类验证码,我们只需要对每个数字进行采样,建立标准库,然后应用的时候一一对照标准库,就可以轻易做到 ...

  6. JAVA绘制图片原理_java开发_图片截取工具实现原理

    先来看看效果: 测试一: 原图: 效果图: 测试二: 原图: 效果图: 代码部分: /** * */ package com.b510; import java.awt.rectangle; impo ...

  7. python神经网络库识别验证码_基于TensorFlow 使用卷积神经网络识别字符型图片验证码...

    本项目使用卷积神经网络识别字符型图片验证码,其基于TensorFlow 框架.它封装了非常通用的校验.训练.验证.识别和调用 API,极大地减低了识别字符型验证码花费的时间和精力. 项目地址:http ...

  8. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  9. 图片验证码和短信验证码开发

    图片验证码和短信验证码开发 tip :前后端分离,先开发后端,后完善前端 一.图片验证码流程 1.引入captcha包放入utils 不是独立的第三方包放入utils,独立的包放入libs里面 cap ...

最新文章

  1. 线上java JVM问题排查
  2. 机器人流程自动化技术的新发展
  3. 常用的正则表达式的运用--学习笔记(二)
  4. C语言实现简单的电子通讯录2
  5. vue-cli起服务chrome不能打断点——每周汇总(第一周)
  6. http的“无连接”指的是_头条一面:HTTP协议无状态中的 quot;状态quot; 到底指的是什么?...
  7. sql中update多表处理
  8. (六)ModelSim 下载安装以及crack的注册
  9. 计算机Word2010中刷新键,Office2010常用快捷键汇总(最新整理)
  10. 看了B站上的这些Java视频,我飘了!
  11. 基于ssm的酒店客房管理系统(含数据库结构文档)
  12. Jointly Extracting Multiple Triplets with Multilayer Translation Constraints [论文研读]
  13. “携手共建互联网安全生态”研讨会在京召开
  14. 2017070506嵌入式开发系统概述和开发工具的使用
  15. 小米蓝牙耳机怎么串联,只有一边有声音
  16. 与北京相比较而言,杭州能不能挺进“一线”,还得看未来科技城---云城,第二机场入住云城周边是神助攻
  17. Linux——操作系统安装
  18. 解决Navicat1166错误
  19. 入坑 c计划 day 1
  20. 在FL Studio中如何制作人声切片(Vocal Chops)

热门文章

  1. 转义sed替换模式的字符串
  2. #39;git merge#39;和#39;git rebase#39;有什么区别?
  3. Gradle中的实现和编译之间有什么区别?
  4. pyinstaller安装_如何打包Python Web项目,实现免安装一键启动?
  5. 测试线程的状态(Java)
  6. Eigen教程(7)之归约、迭代器和广播
  7. access口 环路_利用STP解决二层环路、实现链路冗余-stp文件怎么打开
  8. linux下ssh/sftp配置和权限设置
  9. 巧技拾遗 | JavaScript 中 Array.every 和 Array.map 的巧妙结合
  10. Avro 序列化操作原理与应用