当前位置: 首页 > news >正文

验证码代码

image.aspx.cs文件内容

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing.Design;
using System.Drawing;
public partial class imagecode : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.CreateCheckCodeImage(RndNum());

}

private string RndNum()
{
int number;
char code;
string checkCode = String.Empty;

System.Random random = new Random();

for (int i = 0; i < 4; i++)
{
number = random.Next();
if (number % 2 == 0)
code = (char)('0' + (char)(number % 10));
else
code = (char)('A' + (char)(number % 26));
checkCode += code.ToString();
}
Response.Cookies.Add(new HttpCookie("yzmcode", checkCode));
return checkCode;
}
private void CreateCheckCodeImage(string checkCode)
{
if (checkCode == null || checkCode.Trim() == String.Empty)
return;
System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
Graphics g = Graphics.FromImage(image);
try
{
//生成随机生成器
Random random = new Random();
//清空图片背景色
g.Clear(Color.White);
//画图片的背景噪音线
for (int i = 0; i < 25; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);
g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
}

Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(checkCode, font, brush, 2, 2);
//画图片的前景噪音点
for (int i = 0; i < 100; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
//画图片的边框线
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
}

}
//验证码使用页login.aspx中的代码
<asp:ImageButton ID="yzm" runat="server" ImageUrl="imagecode.aspx" />
<asp:LinkButton ID="ChangeCode" runat="server" Text="看不清楚?换一个验证码" OnClick="ChangeCode_Click" />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /></div>
//ogin.aspx.cs中的代码
添加
//啥代码也不用写 点击“看不清楚?换一个验证码”以后就可以刷新验证码
protected void ChangeCode_Click(object sender, EventArgs e)
{
}
//提交按钮代码这里是通过cookies来验证的
protected void Button1_Click(object sender, EventArgs e)
{
if (String.Compare(Request.Cookies["yzmcode"].Value, a.Text, true) != 0)
{
Response.Write("<script>alert('验证码错误!')</script>");
}
else
{ Response.Write("<script>alert('验证吗正确!!!')</script>"); }
}

转载于:https://www.cnblogs.com/juan/archive/2009/04/06/1430235.html

相关文章:

  • 非常全面和深入的PHP介绍
  • 网站建设-如何选择
  • 如何在WebService中获取客户端的IP地址
  • 聚集索引和非聚集索引的根本区别(转)----收集下
  • Asterisk的sip呼叫测试(转帖)
  • 网站收集
  • sql语句说明
  • [转]数据库操作,内外联查询,分组查询,嵌套查询,交叉查询,多表查询,语句小结。...
  • 照着这些做,生活自然很开心
  • 后缀表达式相关内容
  • 《论语》原文及其全文翻译 学而篇9
  • discuz 论坛的详细介绍(转载)
  • C#通过shell32来控制本地连接
  • 未能加载文件或程序集 XXX 或它的某一个依赖项
  • Jeffrey Richter开始写CLR Via C#第三版了
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 【技术性】Search知识
  • Android单元测试 - 几个重要问题
  • CODING 缺陷管理功能正式开始公测
  • Django 博客开发教程 16 - 统计文章阅读量
  • MQ框架的比较
  • Otto开发初探——微服务依赖管理新利器
  • Redis 懒删除(lazy free)简史
  • 初识 beanstalkd
  • 给github项目添加CI badge
  • 基于HAProxy的高性能缓存服务器nuster
  • 码农张的Bug人生 - 见面之礼
  • 免费小说阅读小程序
  • 前嗅ForeSpider教程:创建模板
  • 一天一个设计模式之JS实现——适配器模式
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • $jQuery 重写Alert样式方法
  • (2)MFC+openGL单文档框架glFrame
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (二)Linux——Linux常用指令
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (转)iOS字体
  • (转)程序员疫苗:代码注入
  • (转)德国人的记事本
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .cn根服务器被攻击之后
  • .NET 反射的使用
  • .Net8 Blazor 尝鲜
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .net解析传过来的xml_DOM4J解析XML文件
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • [Android] Implementation vs API dependency
  • [BZOJ 4598][Sdoi2016]模式字符串
  • [C/C++]数据结构 栈和队列()
  • [InnoDB系列] -- SHOW INNODB STATUS 探秘
  • [JS设计模式]Prototype Pattern