用C_实现随机验证码用C_实现随机验证码
tr> 1 验证码基本原理 验证码包括两步, ,1, 生成随机验证码 ,用于显示验证码 img 控 件 的 src 属 性 指 向 img.asp,x 验证码由服务器端随机生成 , 通常由数字、 字母或特殊onclick=" this.src=this.src+'?'" 语句 用于实现了客户端无刷新更 字符组成, 一般存储在 Session变量中 。
。 换验证码功能,2, 发送至客户端
用 Session " ( Code") 变量存储验证 码 , 在 default.aspx的 而 且 为端 ,...
用C_实现随机验证码
tr> 1 验证码基本原理
|
验证码包括两步, ,1, 生成随机验证码 ,用于显示验证码 img 控 件 的 src 属 性 指 向 img.asp,x 验证码由服务器端随机生成 , 通常由数字、 字母或特殊onclick=" this.src=this.src+'?'" 语句 用于实现了客户端无刷新更 字符组成, 一般存储在 Session变量中 。
。 换验证码功能,2, 发送至客户端
用 Session " ( Code") 变量存储验证 码 , 在 default.aspx的 而 且 为端 ,验证码一般都附着在一张图片上发送至客户 Page_Load事件中与用户输入的文 本进行比较 , 从而达到验证
。 用户输入的目的了防止序自动识别, 一般还要为图片加上背景噪声线、 前景噪
点和图像扭曲等效果。 img.aspx页面用于产生验证码和 发送至客户端的图片, 设
, 代码全部在 img.aspx.cs文件中 , 计器中不需要任何代码
2 C# 实现验证码 using System.Drawing; 在 Visual Studio 2005中新 建一个 Web网 站, 默认启动页 using System.Drawing.Drawing2D; default.aspx 。 再添加一个名为 img.aspx 作为用户身份认证页面using System.IO; 的 Web窗 体, 这个文件专门用于产生验证码并将它 附 着 在 一 public partial class img : System.Web.UI.Page 张图片上显示在 default.aspx 。 页面上{
protected void Page_Load(objectsender, EventArgs e) 生成用户登录在 default.aspx的设 计器中加入如下代码 , { 界面, 如图 1 所示。 //验证码长度为 6
this.CreateImg(this.GenRndCode(6)); } //产生验证码的函数,参数为验证码的长度 private string GenRndCode(inti_lenght)
{ //验证码文本由英文字母,含大小写,和数字组成 string str_source = "vR51Cjqr2opA93Bst84FzG PXdef6ZQJaD0ESi7lmUOLWnYbTwxMKNghcVHIkuy"; 图 1 用户认证页面 char[] chr_source = str_source.ToCharArray(); string str_code = "";
Random rnd=new Random(); 用户名, | |
for (int i = 0; i | |
str_code = str_code + " " + chr_source [rnd.Next(0, | | ,下转第 73 页,
67
选择 “工资管理子系统” 后, 模块名称列项出现如图 2 所示。 图 3 图 2 通过以上步骤就实现了 JSP、 Ajax、 Oracle存 储 过 程 三 级 动态级联, 希望通过此文能给程序开发人员提供帮助, 能起到 , 菜单名称列表项出现如图 3 所示。 选择 “员工管理” 后抛砖引玉的作用。 这样通过选择不同的系统, 模块名称列表就会显示该系统
所对应的模块, 进而选择不同的模块, 菜单名称列表就会显示 ,收 稿 日 期 , 2012-02-08,
该模块对应的菜单, 从而实现了三级动态级联。
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ,上接第 67 页, //设置字体
} Font font = new Font ("Times New Roman", 20, return str_code; (System.Drawing.FontStyle.Bold));
} //设置渐变画刷,由红至蓝,
//生成包含验证码的函数,参数为已生成的验证码LinearGradientBrush LGbrush= new LinearGradient private void CreateImg(stringstr_code) Brush (new Rectangle (0, 0, x, y), Color.Blue, Color.Red, 0, { false);
//将验证码存入 Session 变量用于比对用户输入的文本//将验证码写入图片
Session["Code"]= str_code; graph.DrawString (str_code, font, LGbrush, img. Bitmap img = new Bitmap(((int) str_code.Length * 20), 30); Width / 10, img.Height / 10);
Graphicsgraph = Graphics.FromImage(img); //以 GIF 格式将图片输出至浏览器 try MemoryStream ms = new MemoryStream(); { img.Save(ms, System.Drawing.Imaging.ImageFor
//清空并用白色背景填充 mat.Gif);
graph.Clear(Color.White); Response.ClearContent();
int x = img.Width; Response.ContentType= "image/Gif";
int y = img.Height; Response.BinaryWrite(ms.ToArray());
//绘制灰色背景噪声线}
Random rnd = new Random(); catch
for (int i = 0; i < 30; i++) {
{ graph.Dispose();
int x1 = rnd.Next(x); img.Dispose();
int y1 = rnd.Next(y); }
int x2 = rnd.Next(x); }
int y2 = rnd.Next(y); 在 img.aspx页面 的 Page_Load事件中 , 调用函数 CreateImg graph.DrawLine(new Pen(Color.Gray),x1, y1, x2, y2); () 即可生成验证码。 } 用户还可以根据自己的需要 指 定 文 本 、 字 体 、 大 小 、 颜 //绘制黄色前景噪点色、 扭曲相位和幅度等参数, 实现不同效果的验证码。 for (int i = 0; i < 200; i++) ,收 稿 日 期 , 2012-04-01, {
graph.DrawRectangle(newPe n(Color.Yellow),rnd.
Next(x),rnd.Next(y),1,1);
}
73
本文档为【用C_实现随机验证码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。