课程设计心得网站验证码的实现模版.docx
- 文档编号:11013114
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:12
- 大小:223.63KB
课程设计心得网站验证码的实现模版.docx
《课程设计心得网站验证码的实现模版.docx》由会员分享,可在线阅读,更多相关《课程设计心得网站验证码的实现模版.docx(12页珍藏版)》请在冰豆网上搜索。
课程设计心得网站验证码的实现模版
成绩评定表
学生姓名
石霖
班级学号
1103050137
专业
计算机科学与技术
课程设计题目
网站验证码的
设计与实现
评
语
组长签字:
成绩
日期
2013年1月4日
课程设计任务书
学院
信息科学与工程学院
专业
计算机科学与技术
学生姓名
石霖
班级学号
1103050137
课程设计题目
网站验证码的设计与实现
实践教学要求与任务:
为了防止网站被非法登陆,网站一般通过验证码的方式,防止黑客用软件非法登陆。
验证码一般采用干扰后的图像显示,人可以识别,但机器识别有困难。
本案例用VisualC#.NET开发一个网站的验证码生成软件,并在网页上测试该软件的有效性。
工作计划与进度安排:
第18周
星期一:
设计任务分析和总体设计
星期二:
软件算法和流程设计
星期三、四、五:
软件编码实现
第19周
周一:
软件总体调试
周二:
软件运行分析
周三:
答辩、验收程序
周四:
答辩、验收程序
周五:
书写课程设计报告,提交
指导教师:
2013年1月4日
专业负责人:
2013年1月4日
学院教学副院长:
2013年1月4日
1需求分析………………………………………………………4
2概要设计………………………………………………………4
2.1题目概述…………………………………………………4
2.2功能框图…………………………………………………4
2.3算法流程图………………………………………………4
2.3.1验证码随机数的生成与分配…………………………5
2.3.2证码进行验证…………………………………………6
3调试结果………………………………………………………6
3.1ASP.NET主页……………………………………………6
3.2登陆主页…………………………………………………7
4收获与体会………………………………………………………8
5参考文献………………………………………………………8
6附录………………………………………………………9
1需求分析
网络对现实生活已经产生了非常大的影响,网络带来快捷和方便的同时也产生了许许多多的新问题,例如本案例讨论的安全登录问题。
大家都知道网络登录时必须输入正确的验证码才能登录成功,这是因为机器很难识别验证码。
本案例就是通过VisualC#.NET语言和实际的操作来研究这一问题。
2概要设计
2.1题目概述
防止网站被非法登陆,防止黑客用软件非法登陆,网站要设置验证码。
验证码一般采用干扰后的图像显示,人可以识别,但机器识别有困难。
本案例用VisualC#.NET开发一个网站的验证码生成软件,并在网页上实现操作。
2.2功能框图
网站验证码的设计与实现
随机生成验证码
输入验证码
验证成功与失败的显示
图2.2总功能框图
2.3算法流程图
2.3.1验证码随机数的生成与分配
定义验证码VcodeNum
将验证码写入文件
开始
验证码是否重复
结束
i++
i 生成验证码 是 是 否 否 图2.3.1验证码随机数的生成与分配 2.3.2证码进行验证 开始 输入验证码 输入数据与给定验证码是否相等 验证成功 验证失败! 结束 图2.3.2证码进行验证 3调试结果 3.1ASP.NET主页 图4.1ASP.NET主页 3.2登陆主页 进入登陆主页面 4-2登陆主页 添加用户名、密码、验证码,提交登陆,显示验证成功的信息。 图4-3登陆主页 4收获与体会 一周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。 在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。 学会了合作,学会了宽容,也学会了理解 课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础. 通过这次课程设计,本人在多方面都有所提高生独立工作能力,在这次设计过程中,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。 在此感谢我们的老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;同时感谢对我帮助过的同学们,谢谢你们对我的帮助和支持,让我感受到同学的友谊。 由于本人的设计能力有限,在设计过程中难免出现错误,恳请老师们多多指教 5参考文献 《网站验证码的设计与实现》开发案例 6(附录)代码附录 6.1网站验证码的生成 <%@WebHandlerLanguage="C#"Class="ValidateImage"%> usingSystem; usingSystem.Web; usingSystem.IO; usingSystem.Drawing; publicclassValidateImage: IHttpHandler, System.Web.SessionState.IRequiresSessionState { publicvoidProcessRequest(HttpContextcontext){ context.Response.Cache.SetCacheability(HttpCacheability.NoCache); stringvalid="";//定义随机数字 //生成包含验证码的图片 MemoryStreamms=Create(outvalid); //存储在session中的验证码,用于验证 context.Session["validateImage"]=valid; //置空输出流 context.Response.ClearContent(); //输出流格式 context.Response.ContentType="image/png"; //输出 context.Response.BinaryWrite(ms.ToArray()); context.Response.End(); } publicboolIsReusable{ get{ returnfalse; } } //用来产生2位数的随机数分配的方法 privatestringRndNum(intVcodeNum) { stringVchar="1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,m,n,p,q"+ ",r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z"; //拆分到数组中 string[]VcArray=Vchar.Split(newChar[]{','}); //收集随机数 stringVNum=""; //记录最后随机值,尽量避免同一随机数 inttemp=-1; Randomrand=newRandom(); //通过一个简单的算法,以确保不同的随机编号 for(inti=1;i { if(temp! =-1) { rand=newRandom(i*temp*unchecked((int)DateTime.Now.Ticks)); } intt=rand.Next(55); if(temp! =-1&&temp==t) { returnRndNum(VcodeNum);//如果获得随机数重复,然后递归调用 } temp=t; //随机数中位数加一 VNum+=VcArray[t]; } returnVNum; } //生成随机数,并将其写入图像文件 publicMemoryStreamCreate(outstringVNum) { VNum=RndNum(3); BitmapImg=null; Graphicsg=null; MemoryStreamms=null; System.Randomrandom=newRandom(); Color[]c={Color.Black,Color.Red,Color.DarkBlue,Color.Green, Color.Brown,Color.DarkCyan,Color.Purple}; string[]fonts={"Verdana","MicrosoftSansSerif","ComicSansMS","Arial","宋体"}; Img=newBitmap((int)VNum.Length*18,32); g=Graphics.FromImage(Img); g.Clear(Color.White); //在背景的随机位置画图 for(inti=0;i<100;i++) { intx=random.Next(Img.Width); inty=random.Next(Img.Height); g.DrawRectangle(newPen(Color.LightGray,0),x,y,1,1); } //在g中映射验证码 for(inti=0;i { intcindex=random.Next(6); intfindex=random.Next(5); //格式 Fontf=newSystem.Drawing.Font(fonts[findex],15,System.Drawing.FontStyle.Regular); Brushb=newSystem.Drawing.SolidBrush(c[cindex]); intii=4; if((i+1)%2==0)//控制不同验证码字符在垂直方向上的位置 { ii=2; } g.DrawString(VNum.Substring(i,1),f,b,3+(i*12),ii); } ms=newMemoryStream(); Img.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg); g.Dispose(); Img.Dispose(); returnms; } } 6.2验证码的验证 查看输入的验证码与电脑是否匹配 protectedvoidButton1_Click(objectsender,EventArgse) { if(TextBox3.Text==Session["validateImage"].ToString()) { Response.Write("验证成功! "+TextBox3.Text); Response.Write("用户名为: "+TextBox1.Text); else { Response.Write("验证失败! "+TextBox3.Text+"--->"+Session["validateImage"]); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 心得 网站 验证 实现 模版