中易网

ASP中如何添加验证码,求详细的代码

答案:2  悬赏:60  
解决时间 2021-03-12 15:06
ASP中如何添加验证码,求详细的代码
最佳答案
直接在网上搜个验证码控件 然后导进项目中 snCode.Create(); snCode就是你的那个验证码控件
if (snCode.CheckSN(txtCode.Text.Trim()))//判断验证码是否正确
{
return true;
}
全部回答
主要代码如下: // 生成随机数字字符串 public string getrandomnumberstring(int int_numberlength) { string str_number = string.empty; random therandomnumber = new random(); for (int int_index = 0; int_index < int_numberlength; int_index++) str_number += therandomnumber.next(10).tostring(); return str_number; } 生成随机颜色 public color getrandomcolor() { random randomnum_first = new random((int)datetime.now.ticks); // 对于c#的随机数,没什么好说的 system.threading.thread.sleep(randomnum_first.next(50)); random randomnum_sencond = new random((int)datetime.now.ticks); // 为了在白色背景上显示,尽量生成深色 int int_red = randomnum_first.next(256); int int_green = randomnum_sencond.next(256); int int_blue = (int_red + int_green > 400) ? 0 : 400 - int_red - int_green; int_blue = (int_blue > 255) ? 255 : int_blue; return color.fromargb(int_red, int_green, int_blue); } 根据验证字符串生成最终图象 public void createimage(string str_validatecode) { int int_imagewidth = str_validatecode.length * 13; random newrandom = new random(); // 图高20px bitmap thebitmap = new bitmap(int_imagewidth, 20); graphics thegraphics = graphics.fromimage(thebitmap); // 白色背景 thegraphics.clear(color.white); // 灰色边框 thegraphics.drawrectangle(new pen(color.lightgray, 1), 0, 0, int_imagewidth - 1, 19); // 10pt的字体 font thefont = new font("arial", 10); for (int int_index = 0; int_index < str_validatecode.length; int_index++) { string str_char = str_validatecode.substring(int_index, 1); brush newbrush = new solidbrush(getrandomcolor()); point thepos = new point(int_index * 13 + 1 + newrandom.next(3), 1 + newrandom.next(3)); thegraphics.drawstring(str_char, thefont, newbrush, thepos); } // 将生成的图片发回客户端 memorystream ms = new memorystream(); thebitmap.save(ms, imageformat.png); response.clearcontent(); //需要输出图象信息 要修改http头 response.contenttype = "image/png"; response.binarywrite(ms.toarray()); thegraphics.dispose(); thebitmap.dispose(); response.end(); } 最后在page_load中调用以上代码 private void page_load(object sender, system.eventargs e) { if(!ispostback) { // 4位数字的验证码 string str_validatecode = getrandomnumberstring(4); // 用于验证的session session["validatecode"] = str_validatecode; createimage(str_validatecode); } } 使用的时候在页面中加入一个image,将图片路径改为validatecode.aspx的相对路径即可 <img src="validatecode.aspx" />在需要验证的地方填入如下代码: if (textbox1.text == session["validatecode"].tostring()) { textbox1.text = "正确!"; } else textbox1.text = "错误!";ok,基本搞定,总结一下: 优点:1. 简单明了,适于简单运用 2. 界面友好,图片长宽格式固定 缺点:1. 如果有多个页面都需要此验证码,则会导致session被其它页面重写的情况,可以考虑指定具体session值为效验值 2. 暂时只支持数字,不过更改getrandomnumberstring()中的代码可以实现指定字符机的随机字符串 3. 页面刷新后验证码随之改变
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
在哪个网站上写小说挣钱,一本大约能挣多少,
正版gta5里有坦克和战斗机秘籍吗
全国有几个叫陈仁琼的?
旭云卷云专卖在哪里啊,我有事要去这个地方
澳洲华人媒体是怎样一个存在
surface4出后pro3/3会降价吗?
怎样修改淘宝店铺宝贝详请(注意不是宝贝描述
英语四级报名照片需要露耳朵吗
人而无耻,不知其可。的意思
武汉火车站-D5到达口在哪里啊,我有事要去这
高中学习如何培优补差,如何避免出现新的差科,
烟道防火止回阀真的有用吗
胜叔一路走好藏头诗
拳霸N1的摇杆怎么样,本人键盘换摇杆
游戏深海迷航最后结束曲是什么
推荐资讯
紫光电子mp5ms~622h为什么开不了机
山西警官职业学院历年录取分数线是多少,已经
艾米果吃了有什么好处
请问行政管理研究生专业,是深圳大学的比较好
用c++编写的程序来获取目前电脑上显示的的时
怎样算自慰过度频繁
挂车上容易坏的零部件有哪些?
爱辣啵啵鱼全国加盟连锁330这个地址在什么地
周多福地址在什么地方,想过去办事
ROLEX(东方百货店)地址在什么地方,想过去办
在街上听到一首歌,好像是“你躲在车里我躲在
皖南农家小筑地址在哪,我要去那里办事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?