validate.aspx 就保留一行 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="validate.aspx.cs" Inherits="validate" %>.csusing System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.IO; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; public partial class validate : System.Web.UI.Page { private const int rndLength = 4; protected void Page_Load(object sender, EventArgs e) { // 在此处放置用户代码以初始化页面 string vnum; vnum = GetByRndNum(); Session["validatecode"] = vnum; Response.ClearContent(); //需要输出图象信息 要修改HTTP头 //Response.BufferOutput = false; Response.ContentType = "image/Jpeg"; Response.BinaryWrite(GetByValidateCode(vnum).ToArray()); //Response.Close(); } private MemoryStream GetByValidateCode(string VNum)//返回内存流 { Bitmap Img = null; Graphics g = null; MemoryStream ms = null; Random random = new Random(); int gheight = VNum.Length * 12; Img = new Bitmap(gheight, 20); g = Graphics.FromImage(Img); Font f = new Font("Arial", 12, FontStyle.Bold); g.Clear(GetByRandColor(180, 200));//设定背景色 Pen blackPen = new Pen(Color.AntiqueWhite, 1); //Pen blackPen = new Pen(Color.Black ,1); for (int i = 0; i < 32; i++)// 随机产生干扰线,使图象中的认证码不易被其它程序探测到 { int x = random.Next(gheight); int y = random.Next(20); int xl = random.Next(6); int yl = random.Next(12); g.DrawLine(blackPen, x, y, x + xl, y + yl); } SolidBrush s = new SolidBrush(Color.SaddleBrown); g.DrawString(VNum, f, s, 3, 3); ms = new MemoryStream(); Img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); g.Dispose(); Img.Dispose(); return ms; } //-----------------给定范围获得随机颜色------------ Color GetByRandColor(int fc, int bc) { Random random = new Random(); if (fc > 255) fc = 255; if (bc > 255) bc = 255; //if(ac>255) ac=255; int r = fc + random.Next(bc - fc); int g = fc + random.Next(bc - fc); int b = fc + random.Next(bc - bc); Color rs = Color.FromArgb(r, g, b); return rs; } //-----------------------取随机产生的认证码(N位数字) public string GetByRndNum() { string Vchar = "0,1,2,3,4,5,6,7,8,9";//,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,w,x,y,z" ; string[] VcArray = Vchar.Split(','); string VNum = ""; //采用一个简单的算法以保证生成随机数的不同 Random rand = new Random(); int[] rndArr = new int[rndLength]; for (int i = 1; i < rndLength + 1; i++) { if(i>1) { do { rndArr[i-1] = rand.Next(10);//rand.Next(35) ; bool goon = false; for(int ix=0; ix<i-1; ix++) { if (rndArr[ix] == rndArr[i-1]) { goon = true; break; } } if (!goon) break; } while (1 == 1); } else rndArr[i-1] = rand.Next(10); VNum += rndArr[i-1]; } return VNum; } } //--以上2005在2003中只要修改类那里即可
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls;namespace WebLiveMessage.Library { /// <summary> /// CheckCode 的摘要说明。 /// </summary> public class CheckCode : System.Web.UI.Page { private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 string checkCode = CreateRandomCode(4); Session["CheckCode"] = checkCode; CreateImage(checkCode); } #region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); }
/// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion private string CreateRandomCode(int CodeCount) { string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"; string[] allCharArray = allChar.Split(Convert.ToChar(",")); string RandomCode = ""; int temp = -1; Random rand = new Random(); for (int i = 0; i < CodeCount; i++) { if (temp != -1) { rand = new Random(temp * i * ((int)DateTime.Now.Ticks)); } int t = rand.Next(36); while (temp == t) { t = rand.Next(36); } if (t == 35) { Console.WriteLine(t.ToString() + "|" + i.ToString()); } temp = t; RandomCode += allCharArray[t]; } return RandomCode; } private void CreateImage(string checkCode) { int iwidth = (int)(checkCode.Length * 11.5); System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 20); Graphics g = Graphics.FromImage(image); Font f = new System.Drawing.Font("Arial", 10, System.Drawing.FontStyle.Bold); Brush b = new System.Drawing.SolidBrush(Color.White); //g.FillRectangle(new System.Drawing.SolidBrush(Color.Blue),0,0,image.Width, image.Height); g.Clear(Color.Blue); g.DrawString(checkCode, f, b, 3, 3); Pen blackPen = new Pen(Color.Black, 0); Random rand = new Random(); for (int i = 0; i < 5; i++) { int y = rand.Next(image.Height); g.DrawLine(blackPen, 0, y, image.Width, y); } System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); Response.ClearContent(); Response.ContentType = "image/Jpeg"; Response.BinaryWrite(ms.ToArray()); g.Dispose(); image.Dispose(); } } }
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.IO; using System.Drawing.Imaging; using System.Drawing.Drawing2D;namespace _365tour.Member { /// <summary> /// LoginCodeImage 的摘要说明。 /// </summary> public class LoginCodeImage : System.Web.UI.Page { private Bitmap validateimage; private Graphics g; private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 if (!IsPostBack) { string VNum =MakeValidateCode( ); Session["VNum"]=VNum; ValidateCode(VNum); } } public void ValidateCode(string VNum) { validateimage = new Bitmap(50, 20, PixelFormat.Format24bppRgb); g = Graphics.FromImage(validateimage); g.DrawString(VNum, new Font("Comic Sans MS",12),new SolidBrush(Color.White),new PointF(3,0)); g.FillRectangle(new LinearGradientBrush(new Point(0,0), new Point(110,20), Color.FromArgb(0,0,0,0),Color.FromArgb(255,255,60,40)),0,0,120,30); g.Save(); MemoryStream ms=new MemoryStream(); validateimage.Save(ms,System.Drawing.Imaging.ImageFormat.Gif); Response.ClearContent(); Response.ContentType="image/gif"; Response.BinaryWrite(ms.ToArray()); Response.End(); } private string MakeValidateCode() { char[] s = new char[]{'0','1', '2','3','4','5','6','7','8','9'}; string num = ""; Random r = new Random(); for(int i = 0; i < 4; i++) { num += s[r.Next(0, s.Length)].ToString(); } return num; } #region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); }
validate.aspx 就保留一行 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="validate.aspx.cs" Inherits="validate" %>.csusing System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.IO; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; 这里是不是有问题?
就保留一行
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="validate.aspx.cs" Inherits="validate" %>.csusing System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
public partial class validate : System.Web.UI.Page
{
private const int rndLength = 4;
protected void Page_Load(object sender, EventArgs e)
{
// 在此处放置用户代码以初始化页面
string vnum;
vnum = GetByRndNum();
Session["validatecode"] = vnum; Response.ClearContent(); //需要输出图象信息 要修改HTTP头
//Response.BufferOutput = false;
Response.ContentType = "image/Jpeg";
Response.BinaryWrite(GetByValidateCode(vnum).ToArray());
//Response.Close(); } private MemoryStream GetByValidateCode(string VNum)//返回内存流
{
Bitmap Img = null;
Graphics g = null;
MemoryStream ms = null;
Random random = new Random();
int gheight = VNum.Length * 12;
Img = new Bitmap(gheight, 20);
g = Graphics.FromImage(Img);
Font f = new Font("Arial", 12, FontStyle.Bold); g.Clear(GetByRandColor(180, 200));//设定背景色
Pen blackPen = new Pen(Color.AntiqueWhite, 1);
//Pen blackPen = new Pen(Color.Black ,1);
for (int i = 0; i < 32; i++)// 随机产生干扰线,使图象中的认证码不易被其它程序探测到
{
int x = random.Next(gheight);
int y = random.Next(20);
int xl = random.Next(6);
int yl = random.Next(12);
g.DrawLine(blackPen, x, y, x + xl, y + yl);
}
SolidBrush s = new SolidBrush(Color.SaddleBrown);
g.DrawString(VNum, f, s, 3, 3);
ms = new MemoryStream();
Img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
g.Dispose();
Img.Dispose();
return ms;
}
//-----------------给定范围获得随机颜色------------
Color GetByRandColor(int fc, int bc)
{
Random random = new Random(); if (fc > 255) fc = 255;
if (bc > 255) bc = 255;
//if(ac>255) ac=255;
int r = fc + random.Next(bc - fc);
int g = fc + random.Next(bc - fc);
int b = fc + random.Next(bc - bc);
Color rs = Color.FromArgb(r, g, b);
return rs;
} //-----------------------取随机产生的认证码(N位数字)
public string GetByRndNum()
{
string Vchar = "0,1,2,3,4,5,6,7,8,9";//,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,w,x,y,z" ;
string[] VcArray = Vchar.Split(',');
string VNum = "";
//采用一个简单的算法以保证生成随机数的不同
Random rand = new Random();
int[] rndArr = new int[rndLength];
for (int i = 1; i < rndLength + 1; i++)
{
if(i>1)
{
do
{
rndArr[i-1] = rand.Next(10);//rand.Next(35) ;
bool goon = false;
for(int ix=0; ix<i-1; ix++)
{
if (rndArr[ix] == rndArr[i-1])
{
goon = true;
break;
}
}
if (!goon)
break;
} while (1 == 1);
}
else
rndArr[i-1] = rand.Next(10);
VNum += rndArr[i-1];
}
return VNum;
}
}
//--以上2005在2003中只要修改类那里即可
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;namespace WebLiveMessage.Library
{
/// <summary>
/// CheckCode 的摘要说明。
/// </summary>
public class CheckCode : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
string checkCode = CreateRandomCode(4);
Session["CheckCode"] = checkCode;
CreateImage(checkCode);
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion private string CreateRandomCode(int CodeCount)
{
string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
string[] allCharArray = allChar.Split(Convert.ToChar(","));
string RandomCode = "";
int temp = -1; Random rand = new Random();
for (int i = 0; i < CodeCount; i++)
{
if (temp != -1)
{
rand = new Random(temp * i * ((int)DateTime.Now.Ticks));
} int t = rand.Next(36); while (temp == t)
{
t = rand.Next(36);
} if (t == 35)
{
Console.WriteLine(t.ToString() + "|" + i.ToString());
}
temp = t;
RandomCode += allCharArray[t];
} return RandomCode;
} private void CreateImage(string checkCode)
{
int iwidth = (int)(checkCode.Length * 11.5);
System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 20);
Graphics g = Graphics.FromImage(image);
Font f = new System.Drawing.Font("Arial", 10, System.Drawing.FontStyle.Bold);
Brush b = new System.Drawing.SolidBrush(Color.White);
//g.FillRectangle(new System.Drawing.SolidBrush(Color.Blue),0,0,image.Width, image.Height);
g.Clear(Color.Blue);
g.DrawString(checkCode, f, b, 3, 3); Pen blackPen = new Pen(Color.Black, 0);
Random rand = new Random();
for (int i = 0; i < 5; i++)
{
int y = rand.Next(image.Height);
g.DrawLine(blackPen, 0, y, image.Width, y);
} System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
Response.ClearContent();
Response.ContentType = "image/Jpeg";
Response.BinaryWrite(ms.ToArray());
g.Dispose();
image.Dispose();
}
}
}
<img alt="点击刷新..." src="" style="cursor:pointer;" id="vcodeimg" onclick="this.src='validate.aspx?time=' + Math.random();" />
<script language="javascript" type="text/javascript">
document.getElementById('vcodeimg').src='validate.aspx?time='+ Math.random();
</script>
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;namespace _365tour.Member
{
/// <summary>
/// LoginCodeImage 的摘要说明。
/// </summary>
public class LoginCodeImage : System.Web.UI.Page
{
private Bitmap validateimage;
private Graphics g;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if (!IsPostBack)
{
string VNum =MakeValidateCode( );
Session["VNum"]=VNum;
ValidateCode(VNum);
}
}
public void ValidateCode(string VNum)
{
validateimage = new Bitmap(50, 20, PixelFormat.Format24bppRgb);
g = Graphics.FromImage(validateimage); g.DrawString(VNum, new Font("Comic Sans MS",12),new SolidBrush(Color.White),new PointF(3,0));
g.FillRectangle(new LinearGradientBrush(new Point(0,0), new Point(110,20), Color.FromArgb(0,0,0,0),Color.FromArgb(255,255,60,40)),0,0,120,30);
g.Save();
MemoryStream ms=new MemoryStream();
validateimage.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType="image/gif";
Response.BinaryWrite(ms.ToArray());
Response.End();
} private string MakeValidateCode()
{
char[] s = new char[]{'0','1', '2','3','4','5','6','7','8','9'};
string num = "";
Random r = new Random();
for(int i = 0; i < 4; i++)
{
num += s[r.Next(0, s.Length)].ToString();
}
return num;
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
<script language="javascript" type="text/javascript">
document.getElementById('vcodeimg').src='validate.aspx?time='+ Math.random();
</script>
这个就是调用方法啊..
就保留一行
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="validate.aspx.cs" Inherits="validate" %>.csusing System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
这里是不是有问题?