1.简介




2.简单实现





<?php//创建 宽100,高30的底图,默认黑底
$image = imagecreatetruecolor(100,30);//创建黄色背景
$bgcolor = imagecolorallocate($image,255,255,100);//填充
imagefill($image,0,0,$bgcolor);//输出图片前,要输出header();
header('content-type:image/png');
//以 png 格式输出到浏览器
imagepng($image);
//销毁图片资源
imagedestroy($image);


3.增加干扰

<?php//创建 宽100,高30的底图,默认黑底
$image = imagecreatetruecolor(100,30);//创建黄色背景
$bgcolor = imagecolorallocate($image,255,255,100);//白色//填充
imagefill($image,0,0,$bgcolor);for($i=0;$i<4;$i++){$fontsize = 6;//颜色随机,0-120是深色,比较容易区分$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($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}//增加干扰元素
for($i=0;$i<200;$i++){//50-200 是为了比数字颜色浅$pointcolor = imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);
}//输出图片前,要输出header();
header('content-type:image/png');
//以 png 格式输出到浏览器
imagepng($image);
//销毁图片资源
imagedestroy($image);


4.保存到 session 中


form.php<?phpif(isset($_REQUEST['authcode'])){session_start();if(strtolower($_REQUEST['authcode']) == strtolower($_SESSION['authcode'])){echo "<font color='#0000CC'>输入正确</font>";}else{echo "<font color='#0000CC'>输入错误</font>";}exit;}
?>
<html>
<head><meta http-equiv="content-type;charset=utf-8"/>
</head>
<body>
<form method="post" action="./form.php"><p>验证图片:<img id="captcha_img" border="1" src="./bb.php?r=<?php echo rand();?>"/><a href="javascript:void(0)" onclick="document.getElementById('captcha_img').src='./bb.php?r='+Math.random();">看不清换一个</a></p><p>请输入图片的内容:<input type="text" name="authcode" value=""/></p><p><input type="submit" value="提交" style="padding:6px 20px"/></p>
</form>
</body>
</html>
bb.php<?php
//保存到 session 中
session_start();
$image = imagecreatetruecolor(100,25);
$bgcolor = imagecolorallocate($image,255,255,255);
imagefill($image,0,0,$bgcolor);//随机生成4个数字
/*for($i=0;$i<4;$i++){$fontsize = 6;$fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));$fontcontent = rand(0,9);$x =$i * 20 + rand(5,10) ;$y = rand(5,10);imagestring($image,5,$x,$y,$fontcontent,$fontcolor);
}*/$captch_code = "";//生成随机数字+字母
for($i=0;$i<4;$i++){$fontsize = 6;$fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));$data = "abcdefghijklmnopqrstuvwxyz123456789";//不出现0,因为容易和o冲突$fontcontent = substr($data,rand(0,strlen($data)),1);$captch_code .= $fontcontent;$x =$i * 20 + rand(5,10) ;$y = rand(5,10);imagestring($image,5,$x,$y,$fontcontent,$fontcolor);
}$_SESSION['authcode'] = $captch_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);
}//增加线干扰元素
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);

5.图片验证码

<?phpsession_start();$table = array('pic0'=>'猫','pic1'=>'狗','pic2'=>'鸟','pic3'=>'虎'
);$index = rand(0,3);
$value = $table['pic'.$index];
$_SESSION['authcode'] = $value;$filename = dirname(__FILE__).'\\pic'.$index.'png';
$content = file_get_contents($filename);
header('content-type:image/png');
echo $content;

6.中文验证

83. 验证码(1)相关推荐

  1. 83.Django项目中使用验证码

    1. 概述 ​ 验证码(CAPTCHA)是"Completely Automated Public Turing test to tell Computers and Humans Apar ...

  2. 戏说 .NET GDI+系列学习教程(三、Graphics类的应用_验证码)

    关于Graphics也有了基本了解下面想说的的是学这个东东干什么呢,到底如何应用 目前常见应用 1.验证码(参照网上的) 2.打印排版(会提到关于条形码大小设置) 3.自定义控件 一.验证码 1 cl ...

  3. 使用Python PIL库实现简单验证码的去噪处理

    想要识别验证码,收集足够多的样本后,首先要做的就是对验证码原始图片进行处理,对验证码识别分类之前,一般包括:将彩色图片转换成灰度图.将灰度图二值化和去除噪点三个基本过程.这里仅以比较简单的验证码为例, ...

  4. TensorFlow练习20: 使用深度学习破解字符验证码

    验证码是根据随机字符生成一幅图片,然后在图片中加入干扰象素,用户必须手动填入,防止有人利用机器人自动批量注册.灌水.发垃圾广告等等 . 验证码的作用是验证用户是真人还是机器人:设计理念是对人友好,对机 ...

  5. TensorFlow练习27: 验证码生成器-从文本生成图像

    前文<TensorFlow练习20: 使用深度学习破解字符验证码>是一个基于CNN的识别验证码练习,也就是根据图像预测文本.本帖就来个大反转,即从文本合成图像,看看能不能用深度学习练一个验 ...

  6. 自己封装的一个java图片验证码

    原文:http://www.cnblogs.com/chiangchou/p/VCodeGenerator.html 验证码生成器: 1 package com.lz.Tools; 2 3 impor ...

  7. django创建验证码

    随机验证码 1 Python生成随机验证码,需要使用PIL模块. 2 3 安装: 4 5 1 6 pip3 install pillow 7 基本使用 8 9 1. 创建图片 10 11 12 fro ...

  8. 验证码实现(随机背景色及字体颜色,带扰乱线条)

    验证码实现(随机背景色及字体颜色,带扰乱线条) 此实现工分三个文件,即:CreatImage.java 生成图像流的类,提供用于生成图片流的方法:images.jsp 图片包装,用于将图片加入到res ...

  9. 转: 通过Servlet生成验证码图片

    孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(九)-- 通过Servlet生成验证码图片 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedIma ...

  10. artdialog 异步加载页面 生成验证码

    artdialog  异步加载一个页面 需求:例如现在好多网站的登录或注册 都是点击弹出一个层出来 然后在上面登录.注册 这个登录可能在网站的每个页面都会有,但是我们又不能在每个页面都这一段html加 ...

最新文章

  1. linux 如何切换jdk的版本
  2. python 操作fit文件图像
  3. Python基础知识-优雅的with as语句
  4. 七、jdk工具之jconsole命令(Java Monitoring and Management Console)
  5. 系统延时任务及定时任务
  6. 如何保证文章中同一组样品在不同子图颜色一致?
  7. 服务器安装lnmp的时候出现client_loop: send disconnect: Connection reset by peer
  8. javaee怎么做到只有登录才可以进网页_java初学者,应该怎么去学习?(建议收藏)...
  9. java如何求上个月的最后一天是多少号_JAVA入门题
  10. 电脑如何启用屏幕键盘(OSK)方法
  11. mysql 切分_MySQL切分查询用法分析
  12. ppt转换图片及有密码情况处理
  13. [模板匹配霍夫变换]——模板匹配分析、霍夫变换分析
  14. 各向同性+随动硬化+过应力-vumat-理论推导
  15. 1011: 圆柱体表面积 Java
  16. 2019年天梯赛练习赛4
  17. SAP中建立一个ODATA步骤
  18. Python—SVD分解压缩图片
  19. 十九 Java的语言基础(System类 Date类)
  20. 最新发布:2022斯坦福AI指数报告

热门文章

  1. Centos 配置eth0 提示Device does not seem to be present -- 转载
  2. 解决tomcat能起开,但是访问不进8080首页的问题
  3. 在Visual Studio 2008中安装mvc2.0(转)
  4. 手机都可以直接敲R了,还要电脑干嘛
  5. 外卖小哥到底是一群什么样的人?答案超乎你想象
  6. day2在基础控制器里面¥this-request ,$this-response,把用户信息存在session,封装jsonResult返回值,Redis门面和Cache不一样...
  7. Andorid用ksoap2调用wcfDemo
  8. 基于Android的手机邮件收发(JavaMail)之四(邮件的发送)
  9. android UI进阶之android中隐藏的layout 抽屉的运用
  10. 天天生鲜项目实战-思路 数据库设计