求救 用asp。net 在登录界面界怎么样写代码 才会有出现验证码那个功能呢?还有怎样把那日期的控件弄成你一点那个三角符才出现日期控件 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 2:找第三方控件1:新建一个aspx页面,page_load里写入以下内容 protected void Page_Load(object sender, EventArgs e) { Response.Buffer = true; Response.ExpiresAbsolute = DateTime.Now.AddDays(-1); Response.Expires = 0; Response.CacheControl = "no-cache"; Response.AddHeader("Pragma", "No-Cache"); System.Random rdm = new Random(); Bitmap bp = new Bitmap(100, 40); string AllStr = "23456789ABCDEFGHJKMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz"; string[] zt = new string[] { "Arial Black", "Comic Sans MS", "Georgia" }; SolidBrush bs = new SolidBrush(Color.FromArgb(255, 55, 0)); SolidBrush bs1 = new SolidBrush(Color.FromArgb(243, 241, 241)); SolidBrush bs2 = new SolidBrush(Color.FromArgb(80, 230, 115, 0)); Graphics Dr = Graphics.FromImage(bp); Dr.FillRectangle(bs1, 0, 0, 100, 40); string rr = ""; for (int i = 0; i <= 30; i++) { char c1 = AllStr[rdm.Next(0, AllStr.Length - 1)]; Dr.DrawString(c1.ToString(), new Font(zt[rdm.Next(0, zt.Length - 1)], (float)rdm.Next(12, 22)), bs2, rdm.Next(0, 100) - 20, rdm.Next(0, 40) - 15); } Dr.DrawLine(new Pen(Color.FromArgb(100, Color.Red)), 0, rdm.Next(0, 40), 100, rdm.Next(0, 40)); Dr.DrawLine(new Pen(Color.FromArgb(100, Color.Red)), 0, rdm.Next(0, 40), 100, rdm.Next(0, 40)); for (int i = 0; i < 4; i++) { char c1 = AllStr[rdm.Next(0, AllStr.Length - 1)]; rr += c1; Dr.DrawString(c1.ToString(), new Font(zt[rdm.Next(0, zt.Length - 1)], (float)rdm.Next(12, 22)), bs, i * 25, rdm.Next(0, 7)); } Dr.DrawLine(new Pen(Color.FromArgb(100, Color.Red)), rdm.Next(0, 100), 0, rdm.Next(0, 100), 40); for (int i = 0; i <= 160; i++) bp.SetPixel(rdm.Next(0, 100), rdm.Next(0, 40), Color.FromArgb(rdm.Next(0, 255), rdm.Next(0, 255), rdm.Next(0, 255))); Session["ValidateCode"] = rr; bp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); Response.Flush(); Response.End(); }用一个image控件,imageurl=你的这个aspx页面如果刷几次出现同样的图片,那么在url后面+"?t="+DateTime.Now.Tick.ToString()验证的时候判断Session["ValidateCode"] 和用户输入的是否相等。 <asp:textbox id="txtLZM" runat="server" Width="144px" CssClass="inputText" Height="14px"></asp:textbox><asp:label id="Lbl" runat="server" Width="38px"><IMG src="CheckCode.aspx" align="absmiddle"></asp:label> protected void btnSubmit_Click(object sender, EventArgs e) { if (Page.IsValid) { if (Session["ValidateCode"] == null) { return; } if (Session["ValidateCode"].ToString().Equals(this.txtLZM.Text.Trim())) { if (string.IsNullOrEmpty(this.txtUser.Text)) { ClientScript.RegisterStartupScript(this.GetType(), "message", "<script language='javascript' defer>alert('请输入用户名');</script>"); return; } //查询用户 DataSet ds; DataRowCollection myrows = ds.Tables[0].Rows; if (myrows.Count == 0) { ClientScript.RegisterStartupScript(this.GetType(), "message", "<script language='javascript' defer>alert('您没有任何权限');</script>"); return; } else { if (myrows[0]["kl"].ToString().Trim().Equals(this.txtPwd.Text.Trim().Replace("'", "''"))) { ClientScript.RegisterStartupScript(this.GetType(), "message", "<script language='javascript' defer>alert('您输入的密码不对');</script>"); return; } else { this.Response.Write("<script language='javascript'>window.open('main.htm','_self')</script>"); } } } } } private string MakeString() { string validatestr=""; char ch; Random rdom=new Random(); int n; for(int i=0;i<4;i++) { n=rdom.Next(); if(n%2==0) ch=(char)('0'+(n%10)); else ch=(char)('A'+(n%26)); validatestr +=ch.ToString(); } Session["ValidateCode"]=validatestr; return validatestr; } private void GenerateImage(string checkCode) { Bitmap image=new Bitmap(checkCode.Length*18,30); 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(); }日期控件可使用My97DatePicker等 这类代码网上很多呢~ 就搜索asp.net 验证码 C#GDIWinform编程 获得Word文档中的章节信息(大纲信息) winform里面Datagridview的表头排序功能是什么原理 Timer C# 问题 一个学习很久编程者的苦恼和困扰 在C#中怎样调用ocx控件 常量中有换行符 要在自定义控件中接受数据集有什么好办法? 求助:一个怪问题,已经调试了四天了。 请问如何知道已绑定的TextBox内容已改变 简单问题,没搞懂。 奇怪!所有池连接均在使用,并且达到了最大池大小。
protected void Page_Load(object sender, EventArgs e)
{
Response.Buffer = true;
Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
Response.Expires = 0;
Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "No-Cache"); System.Random rdm = new Random();
Bitmap bp = new Bitmap(100, 40);
string AllStr = "23456789ABCDEFGHJKMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz";
string[] zt = new string[] { "Arial Black", "Comic Sans MS", "Georgia" };
SolidBrush bs = new SolidBrush(Color.FromArgb(255, 55, 0));
SolidBrush bs1 = new SolidBrush(Color.FromArgb(243, 241, 241));
SolidBrush bs2 = new SolidBrush(Color.FromArgb(80, 230, 115, 0));
Graphics Dr = Graphics.FromImage(bp);
Dr.FillRectangle(bs1, 0, 0, 100, 40);
string rr = "";
for (int i = 0; i <= 30; i++)
{
char c1 = AllStr[rdm.Next(0, AllStr.Length - 1)];
Dr.DrawString(c1.ToString(), new Font(zt[rdm.Next(0, zt.Length - 1)], (float)rdm.Next(12, 22)), bs2, rdm.Next(0, 100) - 20, rdm.Next(0, 40) - 15);
}
Dr.DrawLine(new Pen(Color.FromArgb(100, Color.Red)), 0, rdm.Next(0, 40), 100, rdm.Next(0, 40));
Dr.DrawLine(new Pen(Color.FromArgb(100, Color.Red)), 0, rdm.Next(0, 40), 100, rdm.Next(0, 40));
for (int i = 0; i < 4; i++)
{
char c1 = AllStr[rdm.Next(0, AllStr.Length - 1)];
rr += c1;
Dr.DrawString(c1.ToString(), new Font(zt[rdm.Next(0, zt.Length - 1)], (float)rdm.Next(12, 22)), bs, i * 25, rdm.Next(0, 7));
}
Dr.DrawLine(new Pen(Color.FromArgb(100, Color.Red)), rdm.Next(0, 100), 0, rdm.Next(0, 100), 40);
for (int i = 0; i <= 160; i++)
bp.SetPixel(rdm.Next(0, 100), rdm.Next(0, 40), Color.FromArgb(rdm.Next(0, 255), rdm.Next(0, 255), rdm.Next(0, 255))); Session["ValidateCode"] = rr;
bp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
Response.Flush();
Response.End();
}
用一个image控件,imageurl=你的这个aspx页面
如果刷几次出现同样的图片,那么在url后面+"?t="+DateTime.Now.Tick.ToString()
验证的时候判断Session["ValidateCode"] 和用户输入的是否相等。
<asp:label id="Lbl" runat="server" Width="38px">
<IMG src="CheckCode.aspx" align="absmiddle"></asp:label> protected void btnSubmit_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
if (Session["ValidateCode"] == null)
{
return;
}
if (Session["ValidateCode"].ToString().Equals(this.txtLZM.Text.Trim()))
{
if (string.IsNullOrEmpty(this.txtUser.Text))
{
ClientScript.RegisterStartupScript(this.GetType(), "message", "<script language='javascript' defer>alert('请输入用户名');</script>");
return;
}
//查询用户
DataSet ds;
DataRowCollection myrows = ds.Tables[0].Rows;
if (myrows.Count == 0)
{ ClientScript.RegisterStartupScript(this.GetType(), "message", "<script language='javascript' defer>alert('您没有任何权限');</script>");
return;
}
else
{
if (myrows[0]["kl"].ToString().Trim().Equals(this.txtPwd.Text.Trim().Replace("'", "''")))
{ ClientScript.RegisterStartupScript(this.GetType(), "message", "<script language='javascript' defer>alert('您输入的密码不对');</script>");
return;
}
else
{
this.Response.Write("<script language='javascript'>window.open('main.htm','_self')</script>");
}
}
}
}
} private string MakeString()
{
string validatestr="";
char ch;
Random rdom=new Random();
int n; for(int i=0;i<4;i++)
{
n=rdom.Next();
if(n%2==0)
ch=(char)('0'+(n%10));
else
ch=(char)('A'+(n%26));
validatestr +=ch.ToString();
}
Session["ValidateCode"]=validatestr;
return validatestr;
}
private void GenerateImage(string checkCode)
{
Bitmap image=new Bitmap(checkCode.Length*18,30);
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();
}日期控件可使用My97DatePicker等