public partial class RandomCode : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string Num=CreateNum(6);
HttpCookie code = new HttpCookie("code", Num);
Response.Cookies.Add(code);
//Label1.Text = Num;
CreateCode(Num);
}
//生成随机数
private string CreateNum(int VcodeNum)
{
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,v,w,x,y,z";
string[] VcArray = Vchar.Split(new char[]{','});
string ReturnNum="";
Random r = new Random();
for (int i = 0; i < VcodeNum; i++)
{
int j = r.Next(35);
char c = Convert.ToChar(VcArray[i]);
ReturnNum += VcArray[j].ToString();
}
return ReturnNum;
}
//生成随机数的图片
private void CreateCode(string RndNum)
{
Bitmap Img = null;
Graphics g = null;
MemoryStream ms = new MemoryStream();
int gheight = RndNum.Length * 12;//这是随机图片的高度
Img = new Bitmap(gheight,25);//创建一个图片
g = Graphics.FromImage(Img);
//设置背景
g.Clear(Color.Wheat);
//文字字体设置
Font f = new Font("Arial Black", 10);
//文字颜色,要用s写出字来
SolidBrush s = new SolidBrush(Color.Green);
g.DrawString(RndNum, f, s, 3,3);
Img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
Response.ClearContent();
// Response.ContentType = "images/Jpeg";//假如只是设置这里的话页面会无法显示,所有后来我只能用下面的Response.AddHeader()方法了
Response.AddHeader("ContentType", "images/Jpeg");
Response.BinaryWrite(ms.ToArray());
g.Dispose();
Img.Dispose();
Response.End();
}
}
验证时的代码:
protected void Validate_Click(object sender, EventArgs e)
{
HttpCookie code = Request.Cookies["code"];
if (TextBox1.Text.Trim() == code.Value.ToString())
{
Response.Write(@"<script>alert('succes!');</script>");
}
}