83. 验证码(1)
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)相关推荐
- 83.Django项目中使用验证码
1. 概述 验证码(CAPTCHA)是"Completely Automated Public Turing test to tell Computers and Humans Apar ...
- 戏说 .NET GDI+系列学习教程(三、Graphics类的应用_验证码)
关于Graphics也有了基本了解下面想说的的是学这个东东干什么呢,到底如何应用 目前常见应用 1.验证码(参照网上的) 2.打印排版(会提到关于条形码大小设置) 3.自定义控件 一.验证码 1 cl ...
- 使用Python PIL库实现简单验证码的去噪处理
想要识别验证码,收集足够多的样本后,首先要做的就是对验证码原始图片进行处理,对验证码识别分类之前,一般包括:将彩色图片转换成灰度图.将灰度图二值化和去除噪点三个基本过程.这里仅以比较简单的验证码为例, ...
- TensorFlow练习20: 使用深度学习破解字符验证码
验证码是根据随机字符生成一幅图片,然后在图片中加入干扰象素,用户必须手动填入,防止有人利用机器人自动批量注册.灌水.发垃圾广告等等 . 验证码的作用是验证用户是真人还是机器人:设计理念是对人友好,对机 ...
- TensorFlow练习27: 验证码生成器-从文本生成图像
前文<TensorFlow练习20: 使用深度学习破解字符验证码>是一个基于CNN的识别验证码练习,也就是根据图像预测文本.本帖就来个大反转,即从文本合成图像,看看能不能用深度学习练一个验 ...
- 自己封装的一个java图片验证码
原文:http://www.cnblogs.com/chiangchou/p/VCodeGenerator.html 验证码生成器: 1 package com.lz.Tools; 2 3 impor ...
- django创建验证码
随机验证码 1 Python生成随机验证码,需要使用PIL模块. 2 3 安装: 4 5 1 6 pip3 install pillow 7 基本使用 8 9 1. 创建图片 10 11 12 fro ...
- 验证码实现(随机背景色及字体颜色,带扰乱线条)
验证码实现(随机背景色及字体颜色,带扰乱线条) 此实现工分三个文件,即:CreatImage.java 生成图像流的类,提供用于生成图片流的方法:images.jsp 图片包装,用于将图片加入到res ...
- 转: 通过Servlet生成验证码图片
孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(九)-- 通过Servlet生成验证码图片 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedIma ...
- artdialog 异步加载页面 生成验证码
artdialog 异步加载一个页面 需求:例如现在好多网站的登录或注册 都是点击弹出一个层出来 然后在上面登录.注册 这个登录可能在网站的每个页面都会有,但是我们又不能在每个页面都这一段html加 ...
最新文章
- 闲来无事,总结 Xcode常用快捷键
- 字节跳动的面试题.pdf
- .NET Core R2安装教程及Hello示例
- php后台富文本编辑器的内容调用到前端小程序页面的一些显示问题,如:nbsp;
- 晚上答辩的理论知识准备
- php数组遍历相同的元素覆盖_php获取数组中重复数据的两种方法
- sonarqube+jenkins 构建代码质量管理平台
- Data Minig --- Decision Tree ID3 C4.5 Gini Index
- 【C++】max_element() 和 min_element()
- mxm智能教育机器人无法智能对话_关于智能语音机器人使用中可能出现的问题
- Windows10驱动签名禁用教程
- 大连IT产业解析(2人才篇)
- 粒子群算法组卷_概率表示的二进制粒子群算法在组卷中的应用
- simulink中的s-function的直接馈入
- 解决iframe中引入页面的js失效
- 物联卡显示停用是怎么回事?物联网卡这些状态你都了解吗
- 关于计算机优点缺点的英语作文,平板电脑的优缺点英语作文
- 证书系统64驱动签名工具64Signer
- 如何将excel 导入到Mendix中,具体实现方法
- 南航移动Redis-Cluster趟坑记