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. 闲来无事,总结 Xcode常用快捷键
  2. 字节跳动的面试题.pdf
  3. .NET Core R2安装教程及Hello示例
  4. php后台富文本编辑器的内容调用到前端小程序页面的一些显示问题,如:nbsp;
  5. 晚上答辩的理论知识准备
  6. php数组遍历相同的元素覆盖_php获取数组中重复数据的两种方法
  7. sonarqube+jenkins 构建代码质量管理平台
  8. Data Minig --- Decision Tree ID3 C4.5 Gini Index
  9. 【C++】max_element() 和 min_element()
  10. mxm智能教育机器人无法智能对话_关于智能语音机器人使用中可能出现的问题
  11. Windows10驱动签名禁用教程
  12. 大连IT产业解析(2人才篇)
  13. 粒子群算法组卷_概率表示的二进制粒子群算法在组卷中的应用
  14. simulink中的s-function的直接馈入
  15. 解决iframe中引入页面的js失效
  16. 物联卡显示停用是怎么回事?物联网卡这些状态你都了解吗
  17. 关于计算机优点缺点的英语作文,平板电脑的优缺点英语作文
  18. 证书系统64驱动签名工具64Signer
  19. 如何将excel 导入到Mendix中,具体实现方法
  20. 南航移动Redis-Cluster趟坑记

热门文章

  1. 好文要顶之 --- 简单粗暴地理解 JavaScript 原型链
  2. iOS取证将如漫漫长夜
  3. php mssql 分页SQL语句优化 持续影响
  4. 用turtle实现动态汉诺塔
  5. 在浏览器地址栏输入url的后的过程
  6. Dynamic web project下SSM整合
  7. Object中的clone方法
  8. Tomcat安装与优化
  9. 深入Node.js的模块机制
  10. 4.24口语习语 听力复习