Dim rd As New Random
Dim RdNum As Integer = rd.Next(1000, 9999)
Session("chkCode") = RdNum
Dim newbitmap As New Bitmap(36, 16, Imaging.PixelFormat.Format32bppArgb)
Dim g As Graphics = Graphics.FromImage(newbitmap)
Dim rectangle As New RectangleF(0, 0, 36, 16)
g.FillRectangle(New SolidBrush(Color.BurlyWood), rectangle)
Dim txtfont As New Font("宋体", 10)
g.DrawString(RdNum.ToString, txtfont, New SolidBrush(Color.Blue), rectangle)
newbitmap.Save(Server.MapPath("") & "\test.gif")
这个是我的代码
生成一个四位的随机数 通过图片控件显示随机数
怎样用代码实现验证码的判断过程???
Dim RdNum As Integer = rd.Next(1000, 9999)
Session("chkCode") = RdNum
Dim newbitmap As New Bitmap(36, 16, Imaging.PixelFormat.Format32bppArgb)
Dim g As Graphics = Graphics.FromImage(newbitmap)
Dim rectangle As New RectangleF(0, 0, 36, 16)
g.FillRectangle(New SolidBrush(Color.BurlyWood), rectangle)
Dim txtfont As New Font("宋体", 10)
g.DrawString(RdNum.ToString, txtfont, New SolidBrush(Color.Blue), rectangle)
newbitmap.Save(Server.MapPath("") & "\test.gif")
这个是我的代码
生成一个四位的随机数 通过图片控件显示随机数
怎样用代码实现验证码的判断过程???
解决方案 »
- .net中多国语言显示怎么做?比如主页上有两个按钮一个中文一个英文点击后页面文字就会做相应改变。
- Datalist问题?
- global文件不执行(急!急!急!)
- VS2003中关于HTML 转aspx的方法
- 新手求救!!!
- Win2000系统中,已登录用户点击链接打开的新窗口被作为一个新的会话,如何处理?
- 用htmlencode函数编码字符串存到sqlserver数据库的问题!急!
- 急!在中国万网买的asp.net空间,我只传一个示例文件,如果加控件验证了,当验证过后,按钮事件不执行!如果没加,则执行!
- 大家帮我看看,为什么我投简历没有人回呢?(ASP.NET)
- 请问用Oracle建了表空间之后怎么建表啊?
- 为什么缓存的依赖项更改了,缓存项还没有移除?
- 把这段VB.NET代码转为C#,谢谢啦
Random rd = new Random(); //创建随机数对象 //以下4行,产生由6个字母和数字组成的一个字符串
string str = "ABCDEFGHIJKLMNOPQRSTURWXYZ0123456789";
string my51aspx = "";
for (int i = 0; i < 4; i++)
{
my51aspx = my51aspx + str.Substring(rd.Next(35), 1);
}
//验证码值存放到Session中用来比较
Session["ValidateReg"] = my51aspx; //以下三句,通过随机找一个现有图象产生一个画布Bitmap
string bgFilePath = Server.MapPath("images/0" + new Random().Next(5) + ".jpg");//随机找个图象
System.Drawing.Image imgObj = System.Drawing.Image.FromFile(bgFilePath);
Bitmap newBitmap = new Bitmap(imgObj, 80, 18);//建立位图对象 Graphics g = Graphics.FromImage(newBitmap);//根据上面创建的位图对象创建绘图面
SolidBrush brush = new SolidBrush(Color.Black);//设置画笔颜色 //定义一个含10种字体的数组
String[] fontFamily ={ "Arial", "Verdana", "Comic Sans MS", "Impact", "Haettenschweiler", "Lucida Sans Unicode", "Garamond", "Courier New", "Book Antiqua", "Arial Narrow" }; //通过循环,绘制每个字符,
for (int a = 0; a < my51aspx.Length; a++)
{
Font textFont = new Font(fontFamily[rd.Next(9)], 10, FontStyle.Bold);//字体随机,字号大小30,加粗
//每次循环绘制一个字符,设置字体格式,画笔颜色,字符相对画布的X坐标,字符相对画布的Y坐标
g.DrawString(my51aspx.Substring(a, 1), textFont, brush, a * 19, 0);
} //保存画的图片到输出流中
newBitmap.Save(Response.OutputStream, ImageFormat.Gif);
因为生成的验证码太简单,任何干扰都没有,
可以很轻易被识别。
网上生成验证码的类有很多,随便搜一个用就比你现在的强。其次,生成验证码后,对session赋值 如 Session[“img”]="你的验证码";
然后用户输入后,直接比较用户的输入是否和session相等就可以啦
或者把生成的验证码放入页面的隐藏域里面再读出来和输入的进行比(不安全,最好加解密)
if(String.Compare( Request.Cookies["CheckCode"].Valus,TextBox1.Text.ToUpper(),true!=0))
{
Response.Write("验证码错误!");
}
在登录时加上验证码输入框中的信息与此Session值的判断就可以了。