[求助]求一校验码模块. 求一校验码摸块,C#网站中的.用在用户登陆的时候.不用太复杂,方便使用就行.最好在给一个小小的例子谢谢各位大虾了~~~~~~嘿嘿 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blog.csdn.net/sw515/archive/2005/02/03/279364.aspx这个你看看,可能有帮助的说 以前写的你看看吧 有详细的列子与说明http://www.cnblogs.com/Activer/archive/2006/01/30/324332.html 先声明:这是我用的,但是不是我原创,具体作者我忘记了!------------------CheckCode.aspxprivate void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 this.CreateCheckCodeImage(GenerateCheckCode()); }private string GenerateCheckCode() { int number; char code; string checkCode = String.Empty; System.Random random = new Random(); for(int i=0; i<5; 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("CheckCode", 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<td> 用户名:<INPUT id="UserName" style="BORDER-RIGHT: #ffffff 0px solid; BORDER-TOP: #ffffff 0px solid; FONT-SIZE: 9pt; BORDER-LEFT: #ffffff 0px solid; WIDTH: 110px; BORDER-BOTTOM: #c0c0c0 1px solid; HEIGHT: 16px; BACKGROUND-COLOR: #ffffff" maxLength="20" name="UserName"> </td> </tr> <tr> <td> 密 码:<INPUT id="Password" style="BORDER-RIGHT: #ffffff 0px solid; BORDER-TOP: #ffffff 0px solid; FONT-SIZE: 9pt; BORDER-LEFT: #ffffff 0px solid; WIDTH: 110px; BORDER-BOTTOM: #c0c0c0 1px solid; HEIGHT: 16px; BACKGROUND-COLOR: #ffffff" type="password" maxLength="20" name="Password"> </td> </tr> <tr> <td>校验码:<INPUT id="ValidateCode" style="BORDER-RIGHT: #ffffff 0px solid; BORDER-TOP: #ffffff 0px solid; FONT-SIZE: 9pt; BORDER-LEFT: #ffffff 0px solid; WIDTH: 110px; BORDER-BOTTOM: #c0c0c0 1px solid; HEIGHT: 16px; BACKGROUND-COLOR: #ffffff" maxLength="20" name="ValidateCode"> <img src="CheckCode.aspx"></td> </tr> private void BtLogin_Click(object sender, System.EventArgs e) { if(Request["CheckCode"] == null) { Anthem.Manager.AddScriptForClientSideEval("alert('"+"您的浏览器设置已被禁用 Cookies,您必须设置浏览器允许使用 Cookies 选项后才能使用本系统!"+"')"); return; } if(String.Compare(Request["CheckCode"],Request["ValidateCode"],true) != 0) { Anthem.Manager.AddScriptForClientSideEval("alert('"+"验证码错误,请输入正确的验证码!"+"')"); return; } else { SqlDataReader Reader; string role=""; SqlParameter[] Sqlparas={ new SqlParameter("@UserName", SqlDbType.VarChar,10), new SqlParameter("@PassWord",SqlDbType.VarChar,10) }; Sqlparas[0].Value=Request["UserName"]; Sqlparas[1].Value=Request["PassWord"]; ts.SetConnectString("CMS"); ts.RunProcedure("CheckLoginRole",Sqlparas,out Reader); bool tf=Reader.HasRows; if (tf) { int num; SqlParameter[] paras={ new SqlParameter("@UserName", SqlDbType.VarChar,10), new SqlParameter("@FromIP",SqlDbType.VarChar,50) }; paras[0].Value=Request["UserName"]; paras[1].Value=Page.Request.UserHostAddress; ts.SetConnectString("CMS"); ts.RunProcedure("UserLogAdd",paras,out num); while (Reader.Read()) { role =role+Reader["FID"].ToString()+","; } Session["UserName"]=Request["UserName"]; Session["role"]=role; Anthem.Manager.AddScriptForClientSideEval("window.location = 'MainForm.aspx';"); } else { Anthem.Manager.AddScriptForClientSideEval("alert('密码和用户名不匹配!!')"); } } } fds2003(Hunter) 前辈,代码用不了哦,少了很多引用呢.可以把引用部分贴出来吗? 找不到哦~~我的是.net2003,想要C#开发的例子,最好能运行的 C# VFW 视频捕捉 结构体定义:如何实现同样的结构,不同的名称 窗体背景半透明,控件不透明?? ADO.Net中我想把这两条语句写在一起,请问如何获得第二条语句的值? 异常 这是.net菜单的bug吗? 请问大家一般用什么动态包含文件呢?iframe还是include! 请问,如何设置组合键? VS2005中设置MASTER母版,子页如何定义自己的JAVASCRIPT或引用脚本文件?? 如何获得一个文件的文件类型? 如何改变网格控件模板列中控件的值 请问用C#编web聊天程序,是不是就不用socket来写,是用application来做吗?
这个你看看,可能有帮助的说
http://www.cnblogs.com/Activer/archive/2006/01/30/324332.html
------------------
CheckCode.aspx
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
this.CreateCheckCodeImage(GenerateCheckCode());
}
private string GenerateCheckCode()
{
int number;
char code;
string checkCode = String.Empty;
System.Random random = new Random();
for(int i=0; i<5; 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("CheckCode", 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();
}
}
用户名:<INPUT id="UserName" style="BORDER-RIGHT: #ffffff 0px solid; BORDER-TOP: #ffffff 0px solid; FONT-SIZE: 9pt; BORDER-LEFT: #ffffff 0px solid; WIDTH: 110px; BORDER-BOTTOM: #c0c0c0 1px solid; HEIGHT: 16px; BACKGROUND-COLOR: #ffffff"
maxLength="20" name="UserName">
</td>
</tr>
<tr>
<td>
密 码:<INPUT id="Password" style="BORDER-RIGHT: #ffffff 0px solid; BORDER-TOP: #ffffff 0px solid; FONT-SIZE: 9pt; BORDER-LEFT: #ffffff 0px solid; WIDTH: 110px; BORDER-BOTTOM: #c0c0c0 1px solid; HEIGHT: 16px; BACKGROUND-COLOR: #ffffff"
type="password" maxLength="20" name="Password">
</td>
</tr>
<tr>
<td>校验码:<INPUT id="ValidateCode" style="BORDER-RIGHT: #ffffff 0px solid; BORDER-TOP: #ffffff 0px solid; FONT-SIZE: 9pt; BORDER-LEFT: #ffffff 0px solid; WIDTH: 110px; BORDER-BOTTOM: #c0c0c0 1px solid; HEIGHT: 16px; BACKGROUND-COLOR: #ffffff"
maxLength="20" name="ValidateCode"> <img src="CheckCode.aspx"></td>
</tr>
{
if(Request["CheckCode"] == null)
{
Anthem.Manager.AddScriptForClientSideEval("alert('"+"您的浏览器设置已被禁用 Cookies,您必须设置浏览器允许使用 Cookies 选项后才能使用本系统!"+"')");
return;
} if(String.Compare(Request["CheckCode"],Request["ValidateCode"],true) != 0)
{
Anthem.Manager.AddScriptForClientSideEval("alert('"+"验证码错误,请输入正确的验证码!"+"')");
return;
}
else
{
SqlDataReader Reader;
string role="";
SqlParameter[] Sqlparas={
new SqlParameter("@UserName", SqlDbType.VarChar,10),
new SqlParameter("@PassWord",SqlDbType.VarChar,10)
};
Sqlparas[0].Value=Request["UserName"];
Sqlparas[1].Value=Request["PassWord"];
ts.SetConnectString("CMS");
ts.RunProcedure("CheckLoginRole",Sqlparas,out Reader); bool tf=Reader.HasRows;
if (tf)
{
int num;
SqlParameter[] paras={
new SqlParameter("@UserName", SqlDbType.VarChar,10),
new SqlParameter("@FromIP",SqlDbType.VarChar,50)
};
paras[0].Value=Request["UserName"];
paras[1].Value=Page.Request.UserHostAddress;
ts.SetConnectString("CMS");
ts.RunProcedure("UserLogAdd",paras,out num);
while (Reader.Read())
{
role =role+Reader["FID"].ToString()+",";
}
Session["UserName"]=Request["UserName"];
Session["role"]=role;
Anthem.Manager.AddScriptForClientSideEval("window.location = 'MainForm.aspx';");
}
else
{
Anthem.Manager.AddScriptForClientSideEval("alert('密码和用户名不匹配!!')");
}
}
}