生成验证码比较简单,画图也不难,不过大家都不喜欢读手册,也不喜欢自己动手,一般是网上抄一段代码了事,我一直如此,偶尔画图,其实发现画图挺有趣。
不过拿普通字体生成的验证码,是没有一点“战斗力”的,很轻易的就会验证码识别程序识别内容,然后轻易被灌水,要生成好的验证码图片不是简单的事情,有些大公司专门一个部门去做这么一件事情,不过我这里只是了解演示,一般用途应该就够用了吧,呵呵。
下面两个函数,一个能够画出中文内容,另外一个能够画出英文内容,按照需要使用。
/**
*生成中文字符,
*
*必须有GD库、iconv或者mbstring库、相应的字体文件
*/
functionmakeChineseCharPic($str='中文字符'){
//转码
if(function_exists('iconv')){
$str=iconv('gbk','utf-8',$str);
}elseif(function_exists('mb_convert_encoding')){
$str=mb_convert_encoding($str,'utf-8','gbk');
}else{
exit("Noticonvcharset");
}
//产生图片
$im=imageCreate(80,30);
//背景色
$bkg=imageColorAllocate($im,0,255,255);
//字体色
$clr=imageColorAllocate($im,0,128,255);
//字体文件路径
$font="c:/windows/fonts/simhei.ttf";
//使用字体来画TTF内容
imageTTFText($im,13,0,5,20,$clr,$font,$str);
//--------------------------------------------------
//黑体:simhei.ttf,宋体:simsun.ttc,隶书:simli.ttf,楷体:simkai.ttf,幼圆:simyou.ttf
//华文行楷:stxingka.ttf,华文新魏:stxinwei.ttf,华文彩云:stcaiyun.ttf,华文仿宋:stfangso.ttf
//方正姚体:fzytk,方正舒体:fzstk.ttf
//--------------------------------------------------
//输出后清除资源
header("Content-type:image/png");
imagePng($im);
imageDestroy($im);
}
/**
*画英文字符(必须有GB库)
*/
functionmakeEnglishCharPic($str='ABCD12'){
//生成图片
$im=imageCreateTrueColor(65,20);
//背景色
$bg=imageColorAlLocate($im,0,0,0);
//字体色
$textColor=imageColorAlLocate($im,0,255,255);
//画图
imageString($im,5,5,2,$str,$textColor);
//输出后清除资源
header("Content-type:image/jpeg");
imageJpeg($im);
imageDestroy($im);
}
有兴趣的欢迎自行加入干扰元素,或者是对图片进行变形,让那些图片识别程序无法识别。(最近两个月超级忙,好久没写东西,写一篇凑数,嘿嘿,表见怪)
分享到:
相关推荐
- "ÑéÖ¤Âë" 和 "验证码" 是中文的“验证码”一词,这两个文件可能是程序的资源文件或者备份,或者是其他与验证码相关的文本文件。 总结这些信息,我们可以得出,这个压缩包提供的是一份使用Delphi编程语言...
这通常涉及比较两个字符串,考虑到可能出现的大小写、空格和额外字符问题,可能需要进行一些预处理。 8. **错误处理**:在用户输入错误时,程序应该提供反馈。VB的`Try...Catch`语句可以捕获异常,实现错误处理。 ...
验证码的核心在于生成随机字符串和绘制图像两个步骤。以下是一个简单的ASP实现图形验证码的流程: 1. **生成随机字符串**: - 首先,我们需要定义一个包含字母和数字的字符集。 - 使用VBScript的RND函数生成一个...
可以使用两个独立的字符数组,分别存储大写和小写字母,然后随机选取。 3. **图形化验证码** - **绘制背景**:在ASP.NET中,我们可以使用`System.Drawing`命名空间中的类来创建图像。首先创建一个新的`Bitmap`对象...
这种验证方式要求用户通过移动滑块将两个部分的图像拼接在一起,以此来证明他们是人类而不是自动程序。这种交互方式相比传统的文本输入验证码,更加直观且易于操作,尤其对于有视觉障碍的用户更为友好。 首先,我们...
在本案例中,我们将探讨如何利用C#中的图形设备接口(GDI)来创建一个自定义的验证码。GDI是.NET Framework提供的一种图形编程接口,允许程序员在Windows应用程序中进行图形绘制。 首先,验证码的基本原理是生成一...
算数验证码通常由两个或四个数字组成,通过简单的数学运算(如加法、减法、乘法或除法)连接它们。用户需要解答这个算术问题以证明他们是有生命的个体,而不是机器。这种类型的验证码比传统的字符验证码更难以被自动...
拖动式验证码通常包含两个部分:一个可移动的元素(如一个滑块)和一个目标区域。用户需要通过拖动滑块将其与目标区域对齐,以完成验证。这种验证码方式不仅降低了用户的使用难度,也增加了机器自动破解的难度。 ##...
这段代码首先定义了一个颜色生成函数`getRandColor(int fc, int bc)`,它接受两个参数作为范围,并返回一个介于这两个颜色之间的随机颜色。这个函数用于生成背景色和数字的颜色。 接下来,创建一个`BufferedImage`...
这种验证码通常包含两个或更多随机数字,并用加号或减号连接,要求用户计算结果。 1. **验证码生成**: - **随机数字生成**:首先,系统会生成两个或多个随机数字。在.Net环境中,可以使用`Random`类来生成指定...
CaptchaTool类包括两个方法,generate方法可以实现生成'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'中的四位字符,并将这些字符写道captcha目录里面的图片上,同时将码值保存在session中,并输出,此方法不需要参数。...
在当前的网络应用中,图形验证码是网站或应用程序用来区分人与机器人操作,防止自动化工具进行恶意注册、登录、评论等操作的一种常用手段。它要求用户输入一些扭曲的文字或数字,以确保其为真实用户而非机器人。生成...
描述中提到该实现可在Visual Studio 2010(VS2010)下运行,并且通过修改两个参数,也能在VS2008中运行。这意味着这个代码兼容这两种版本的IDE,这通常是通过调整编译器选项和目标框架完成的。 在C#中,我们可以...
在网页开发中,验证码是一种防止自动化程序(如机器人)非法操作的重要手段。随着技术的发展,传统的数字或字母组合验证码已经逐渐被更人性化的图形验证码所取代,其中拖动滑块图片拼图验证码尤其受到青睐。本文将...
每循环一次产生一个含两个元素的十六进制字节数组,并将其放入bject数组中,每个汉字有四个区位码组成,区位码第1位和区位码第2位作为字节数组第一个元素,区位码第3位和区位码第4位作为字节数组第二个元素,同时...
4. **噪声添加**:在验证码图形上添加随机噪声点或线条,可以增加视觉干扰,防止OCR(光学字符识别)技术识别。这些噪声点可以通过在画板上随机位置绘制小点或短线来实现。 5. **图像保存与显示**:绘制完成后,...
在IT行业中,尤其是在Web开发领域,身份证验证与验证码模板是两个关键的安全机制。它们用于确保数据的准确性和系统的安全性。让我们深入探讨这两个概念及其在Java基础中的实现。 首先,身份证验证是一个过程,用来...
滑动验证码要求用户将两个图像片段正确拼接在一起,而拼图验证码则需要用户重组一个被打乱顺序的图像。这些类型的验证码虽然增加了用户交互,但也提高了安全性,因为它们更难被自动化程序破解。 在实际开发中,还...
Flash是一种矢量图形和多媒体平台,它允许开发人员创建交互式的应用程序,包括验证码。在Flash中生成验证码,开发者可以利用ActionScript编程语言,创建一个动态生成随机字符的脚本。这些字符可以是文字、数字或两者...
Java模拟QQ样式验证码生成器是一种基于Java编程语言实现的工具,用于创建类似于QQ应用程序中使用的验证码。QQ验证码通常具有特定的样式,包括扭曲的文字、颜色干扰以及背景元素,旨在增加机器识别的难度,同时保证...