这个是主页面:<img src="CreateCheckCode.aspx" alt="看不清,请点击换一个!" style="cursor:hand;border:1px solid #ccc;vertical-align:top;" onclick="this.src=this.src+'?temp='+ Math.random();"/>
CreateCheckCode.aspx页面是验证码页面,
我怎么写判断????
CreateCheckCode.aspx页面是验证码页面,
我怎么写判断????
HttpCookie cookie=new HttpCookie("name","value");
读取
Request.Cookie["name"].value;
{ //定义用于验证码的字符数组
char[] AllCheckCodeArray ={ '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','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 randomcode = "";
Random rd = new Random();
//生成4位验证码字符串
for (int i = 0; i < 4; i++)
randomcode += AllCheckCodeArray[rd.Next(AllCheckCodeArray.Length)];
return randomcode;
}
//生成验证码图片
protected void Page_Load(object sender, EventArgs e)
{
//定义图片的宽度
int ImageWidth = 55;
//定义图片高度
int ImageHeigh = 22;
//定义字体,用于绘制文字
Font font = new Font("Arial", 12, FontStyle.Bold);
//定义画笔,用于绘制文字
Brush brush = new SolidBrush(Color.Black);
//定义钢笔,用于绘制干扰线
Pen pen1 = new Pen(Color.FromArgb(255, 100, 100), 0);//这里也可以直接获得一个现有的color对象如:Color.Gold.我是为了美观所以定义和下面一样
Pen pen2 = new Pen(Color.FromArgb(255, 100, 100), 0);//这里根据ARGB值定义获得了一个color对象
//创建一个图像
Bitmap BitImage = new Bitmap(ImageWidth, ImageHeigh);
//从图像获取一个绘画面
Graphics graphics = Graphics.FromImage(BitImage);
//清除整个绘图画面并用颜色填充
graphics.Clear(ColorTranslator.FromHtml("#F0F0F0"));//这里从HTML代码获取color对象
//定义文字的绘制矩形区域
RectangleF rect = new RectangleF(5, 2, ImageWidth, ImageHeigh);
//定义一个随机数对象,用于绘制干扰线
Random rand = new Random();
//生成两条横向的干扰线
for (int i = 0; i < 2; i++)
{
//定义起点
Point p1 = new Point(0, rand.Next(ImageHeigh));
//定义终点
Point p2 = new Point(ImageWidth, rand.Next(ImageHeigh));
//绘制直线
graphics.DrawLine(pen1, p1, p2);
}
//生成两条纵向的干扰线
for (int i = 0; i < 2; i++)
{
//定义起点
Point p1 = new Point(rand.Next(ImageWidth), 0);
//定义终点
Point p2 = new Point(rand.Next(ImageWidth), ImageHeigh);
//绘制直线
graphics.DrawLine(pen2, p1, p2);
}
//绘制验证码文字
graphics.DrawString(CreateCheckCodeString(), font, brush, rect);
//保存图片为gif格式
BitImage.Save(Response.OutputStream, ImageFormat.Gif);
//释放对象
graphics.Dispose();
BitImage.Dispose();
}
}
怎么写,还请指导下
{
VerifyCode v = new VerifyCode();
string code = v.CreateVerifyCode(); // 取随机码
v.CreateImageOnPage(code, this.Context); // 输出图片
Response.Cookies.Add(new HttpCookie("vCode", code)); // 使用Cookies取验证码的值
}
//获取
Request.Cookies["vCode"].Value
www.51aspx.com上面有个防google的验证码,不错
{
if (!IsPostBack)
{
Session["CheckCode"] = 你生成的验证码;
}
}登陆页面:if(String.IsNullOrEmpty(Session["CheckCode"].ToString()))
{
...
}
else
{
...
}
{
if (!IsPostBack)
{
Session["CheckCode"] = 你生成的验证码;
}
}登陆页面:if(String.IsNullOrEmpty(Session["CheckCode"].ToString()))
{
...
}
else
{
...
}
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Text;public partial class VerifyCode : System.Web.UI.Page
{
static string[] FontItems = new string[] { "Arial",
"Helvetica",
"Geneva",
"sans-serif",
"Verdana"
}; static Brush[] BrushItems = new Brush[] { Brushes.OliveDrab,
Brushes.ForestGreen,
Brushes.DarkCyan,
Brushes.LightSlateGray,
Brushes.RoyalBlue,
Brushes.SlateBlue,
Brushes.DarkViolet,
Brushes.MediumVioletRed,
Brushes.IndianRed,
Brushes.Firebrick,
Brushes.Chocolate,
Brushes.Peru,
Brushes.Goldenrod
}; static string[] BrushName = new string[] { "OliveDrab",
"ForestGreen",
"DarkCyan",
"LightSlateGray",
"RoyalBlue",
"SlateBlue",
"DarkViolet",
"MediumVioletRed",
"IndianRed",
"Firebrick",
"Chocolate",
"Peru",
"Goldenrod"
}; private static Color BackColor = Color.White;
private static Pen BorderColor = Pens.DarkGray;
private static int Width = 52;
private static int Height = 19;
private Random _random;
private string _code;
private int _brushNameIndex;
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
//
// TODO : initialize
//
this._random = new Random();
this._code = GetRandomCode(); //
// TODO : use Session["VerfyCode"] save the VerifyCode
//
Session["VerfyCode"] = this._code; //
// TODO : output Image
//
this.SetPageNoCache();
this.OnPaint();
}
} /// <summary>
/// 设置页面不被缓存
/// </summary>
private void SetPageNoCache()
{
Response.Buffer = true;
Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
Response.Expires = 0;
Response.CacheControl = "no-cache";
Response.AppendHeader("Pragma", "No-Cache");
} /// <summary>
/// 取得一个 4 位的随机码
/// </summary>
/// <returns></returns>
private string GetRandomCode()
{
return Guid.NewGuid().ToString().Substring(0, 4);
} /// <summary>
/// 随机取一个字体
/// </summary>
/// <returns></returns>
private Font GetFont()
{
int fontIndex = _random.Next(0, FontItems.Length);
FontStyle fontStyle = GetFontStyle(_random.Next(0, 2));
return new Font(FontItems[fontIndex], 12, fontStyle);
}
/// <summary>
/// 取一个字体的样式
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
private FontStyle GetFontStyle(int index)
{
switch (index)
{
case 0:
return FontStyle.Bold;
case 1:
return FontStyle.Italic;
default:
return FontStyle.Regular;
}
}
/// <summary>
/// 随机取一个笔刷
/// </summary>
/// <returns></returns>
private Brush GetBrush()
{
int brushIndex = _random.Next(0, BrushItems.Length);
_brushNameIndex = brushIndex;
return BrushItems[brushIndex];
} /// <summary>
/// 绘画事件
/// </summary>
private void OnPaint()
{
Bitmap objBitmap = null;
Graphics g = null; try
{
objBitmap = new Bitmap(Width, Height);
g = Graphics.FromImage(objBitmap); Paint_Background(g);
Paint_Text(g);
Paint_TextStain(objBitmap);
Paint_Border(g); objBitmap.Save(Response.OutputStream, ImageFormat.Gif);
Response.ContentType = "image/gif";
}
catch { }
finally
{
if (null != objBitmap)
objBitmap.Dispose();
if (null != g)
g.Dispose();
}
} /// <summary>
/// 绘画背景颜色
/// </summary>
/// <param name="g"></param>
private void Paint_Background(Graphics g)
{
g.Clear(BackColor);
} /// <summary>
/// 绘画边框
/// </summary>
/// <param name="g"></param>
private void Paint_Border(Graphics g)
{
g.DrawRectangle(BorderColor, 0, 0, Width - 1, Height - 1);
} /// <summary>
/// 绘画文字
/// </summary>
/// <param name="g"></param>
private void Paint_Text(Graphics g)
{
g.DrawString(_code, GetFont(), GetBrush(), 3, 1);
} /// <summary>
/// 绘画文字噪音点
/// </summary>
/// <param name="g"></param>
private void Paint_TextStain(Bitmap b)
{
for (int n = 0; n < 30; n++)
{
int x = _random.Next(Width);
int y = _random.Next(Height);
b.SetPixel(x, y, Color.FromName(BrushName[_brushNameIndex]));
} }
}附上生成验证码的类。注意这句:Session["VerfyCode"] = this._code;
{ //定义用于验证码的字符数组
char[] AllCheckCodeArray ={ '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','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 randomcode = "";
Random rd = new Random();
//生成4位验证码字符串
for (int i = 0; i < 4; i++)
randomcode += AllCheckCodeArray[rd.Next(AllCheckCodeArray.Length)];
return randomcode;
}
//生成验证码图片
protected void Page_Load(object sender, EventArgs e)
{
//定义图片的宽度
int ImageWidth = 55;
//定义图片高度
int ImageHeigh = 22;
//定义字体,用于绘制文字
Font font = new Font("Arial", 12, FontStyle.Bold);
//定义画笔,用于绘制文字
Brush brush = new SolidBrush(Color.Black);
//定义钢笔,用于绘制干扰线
Pen pen1 = new Pen(Color.FromArgb(255, 100, 100), 0);//这里也可以直接获得一个现有的color对象如:Color.Gold.我是为了美观所以定义和下面一样
Pen pen2 = new Pen(Color.FromArgb(255, 100, 100), 0);//这里根据ARGB值定义获得了一个color对象
//创建一个图像
Bitmap BitImage = new Bitmap(ImageWidth, ImageHeigh);
//从图像获取一个绘画面
Graphics graphics = Graphics.FromImage(BitImage);
//清除整个绘图画面并用颜色填充
graphics.Clear(ColorTranslator.FromHtml("#F0F0F0"));//这里从HTML代码获取color对象
//定义文字的绘制矩形区域
RectangleF rect = new RectangleF(5, 2, ImageWidth, ImageHeigh);
//定义一个随机数对象,用于绘制干扰线
Random rand = new Random();
//生成两条横向的干扰线
for (int i = 0; i < 2; i++)
{
//定义起点
Point p1 = new Point(0, rand.Next(ImageHeigh));
//定义终点
Point p2 = new Point(ImageWidth, rand.Next(ImageHeigh));
//绘制直线
graphics.DrawLine(pen1, p1, p2);
}
//生成两条纵向的干扰线
for (int i = 0; i < 2; i++)
{
//定义起点
Point p1 = new Point(rand.Next(ImageWidth), 0);
//定义终点
Point p2 = new Point(rand.Next(ImageWidth), ImageHeigh);
//绘制直线
graphics.DrawLine(pen2, p1, p2);
}
//绘制验证码文字
graphics.DrawString(CreateCheckCodeString(), font, brush, rect);
//保存图片为gif格式
BitImage.Save(Response.OutputStream, ImageFormat.Gif);
//释放对象
graphics.Dispose();
BitImage.Dispose();
}
}
private string CreateCheckCodeString()
{ //定义用于验证码的字符数组
char[] AllCheckCodeArray ={ '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','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 randomcode = "";
Random rd = new Random();
//生成4位验证码字符串
for (int i = 0; i < 4; i++)
{
randomcode += AllCheckCodeArray[rd.Next(AllCheckCodeArray.Length)];
}
Session["CheckCode"]=randomcode return randomcode;
}
Session["CheckCode"] = this.CreateCheckCodeString();
{
Label1.Text = "验证码不正确,请重新输入!";
}
else
{
if (ZC.ReturnRed(enrols))
{
Response.Write("<script>alert('用户名已存在,请重新注册!')</script>");
}
else
{
Enrols.Model2.zcEnrol model2 = new Enrols.Model2.zcEnrol();
model2.UserId1 = 3;
model2.Names1 = this.TextBox5.Text.Trim();
model2.PassWord1 = this.TextBox6.Text.Trim();
model2.Sooth_Name1 = this.TextBox8.Text.Trim();
model2.Address1 = this.TextBox9.Text.Trim();
model2.Phone1 = Convert.ToInt32(this.TextBox10.Text.Trim());
model2.Fax1 = Convert.ToInt32(this.TextBox11.Text.Trim());
model2.Mobile1 = Convert.ToInt32(this.TextBox12.Text.Trim());
model2.Email1 = this.TextBox13.Text.Trim();
model2.Time1 = Convert.ToDateTime(DateTime.Now.ToString());
ZC.InsertZC(model2);
Response.Write("<script>alert('恭喜你注册成功!')</script>");
}
这句代码是判断验证码是否是空的,如果不为空就进行比较,如果为空就是生成验证码的页面有问题。
<script type="text/javascript">
MakeValieCode();
function MakeValieCode()
{
var randnum=MakeRandNum(6);
$("Text7").value=randnum;
document.getElementById('valiCode').src='MakeImages.aspx?id='+randnum;
return false;
}
function MakeRandNum(num)
{
var allchr="";
var randnum=["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"];
for(i=0;i<num;i++)
{
var dddrd=Math.floor(Math.random()*35+0);
allchr=allchr+randnum[dddrd];
}
return allchr;
}
</script>
<script type="text/javascript">
通过向验证代码页传你在客户端获取的随机值,就可以不用session了
哥,我服了你了。下面是判断代码:if(String.IsNullOrEmpty(Session["CheckCode"].ToString()))
{
//这是验证码为空的情况,怎么处理你自己搞定
}
else
{
//这是验证码不为空的情况,假设你的验证码输入框的ID=txtCheckCode
if(txtCheckCode.Text.Trim() != Session["CheckCode"].ToString().Trim())
{
//验证码错误
}
else
{
//验证码正确
}
}注意,我这只是给你逻辑判断,具体的代码组织和封装你自己搞定。
哥,我服了你了。下面是判断代码:if(String.IsNullOrEmpty(Session["CheckCode"].ToString()))
{
//这是验证码为空的情况,怎么处理你自己搞定
}
else
{
//这是验证码不为空的情况,假设你的验证码输入框的ID=txtCheckCode
if(txtCheckCode.Text.Trim() != Session["CheckCode"].ToString().Trim())
{
//验证码错误
}
else
{
//验证码正确
}
}注意,我这只是给你逻辑判断,具体的代码组织和封装你自己搞定。
哥,我服了你了。下面是判断代码:if(String.IsNullOrEmpty(Session["CheckCode"].ToString()))
{
//这是验证码为空的情况,怎么处理你自己搞定
}
else
{
//这是验证码不为空的情况,假设你的验证码输入框的ID=txtCheckCode
if(txtCheckCode.Text.Trim() != Session["CheckCode"].ToString().Trim())
{
//验证码错误
}
else
{
//验证码正确
}
}注意,我这只是给你逻辑判断,具体的代码组织和封装你自己搞定。
{
VerifyCode v = new VerifyCode();
string code = v.CreateVerifyCode(); // 取随机码
v.CreateImageOnPage(code, this.Context); // 输出图片
Response.Cookies.Add(new HttpCookie("vCode", code)); // 使用Cookies取验证码的值
}
//获取
Request.Cookies["vCode"].Value
{
Label1.Text = "验证码不能为空,请重新输入!";
}
else
{
if (TextBox4.Text.Trim() != Session["VerfyCode"].ToString().Trim())
{
Label1.Text = "对不起,输入的验证码不正确,请重新输入!";
} else if (ZC.ReturnRed(enrols))
{
Response.Write("<script>alert('用户名已存在,请重新注册!')</script>");
}
else
{
Enrols.Model2.zcEnrol model2 = new Enrols.Model2.zcEnrol();
model2.UserId1 = 3;
model2.Names1 = this.TextBox5.Text.Trim();
model2.PassWord1 = this.TextBox6.Text.Trim();
model2.Sooth_Name1 = this.TextBox8.Text.Trim();
model2.Address1 = this.TextBox9.Text.Trim();
model2.Phone1 = Convert.ToInt32(this.TextBox10.Text.Trim());
model2.Fax1 = Convert.ToInt32(this.TextBox11.Text.Trim());
model2.Mobile1 = Convert.ToInt32(this.TextBox12.Text.Trim());
model2.Email1 = this.TextBox13.Text.Trim();
model2.Time1 = Convert.ToDateTime(DateTime.Now.ToString());
ZC.InsertZC(model2);
Response.Write("<script>alert('恭喜你注册成功!')</script>");
}
}
{
Session["VerfyCode"] =this.CreateCheckCodeString();
}
Response.Write(Session["VerfyCode"].ToString);
看看是否有值。
把生成的验证码放到cookies中
然后在前台判断 cookies的值与你输入的验证码的值就行
if (String.IsNullOrEmpty(Session["VerfyCode"].ToString()))
{
Label1.Text = "验证码不能为空,请重新输入!";
}
else
{
if (TextBox4.Text.Trim() != Session["VerfyCode"].ToString().Trim())
{
Label1.Text = "对不起,输入的验证码不正确,请重新输入!";
} else if (ZC.ReturnRed(enrols))
{
Response.Write(" <script>alert('用户名已存在,请重新注册!') </script>");
}
else
{
Enrols.Model2.zcEnrol model2 = new Enrols.Model2.zcEnrol();
model2.UserId1 = 3;
model2.Names1 = this.TextBox5.Text.Trim();
model2.PassWord1 = this.TextBox6.Text.Trim();
model2.Sooth_Name1 = this.TextBox8.Text.Trim();
model2.Address1 = this.TextBox9.Text.Trim();
model2.Phone1 = Convert.ToInt32(this.TextBox10.Text.Trim());
model2.Fax1 = Convert.ToInt32(this.TextBox11.Text.Trim());
model2.Mobile1 = Convert.ToInt32(this.TextBox12.Text.Trim());
model2.Email1 = this.TextBox13.Text.Trim();
model2.Time1 = Convert.ToDateTime(DateTime.Now.ToString());
ZC.InsertZC(model2);
Response.Write(" <script>alert('恭喜你注册成功!') </script>");
}
}
if (Session["CheckCode"].ToString().Equals(TextBox3.Text.ToString()))
{
try
{
con.Open();
SqlCommand com = new SqlCommand("select count(*) from tb_login where Name=@name and Pass=@ps", con);
com.Parameters.Add(new SqlParameter("@name", SqlDbType.VarChar, 50));
com.Parameters["@name"].Value = TextBox1.Text;
com.Parameters.Add(new SqlParameter("@ps", SqlDbType.VarChar, 50));
com.Parameters["@ps"].Value = TextBox2.Text;
int i = (int)com.ExecuteScalar();
if (i > 0)
{
com = new SqlCommand("insert entrylog values('" + TextBox1.Text + "','" + DateTime.Now.ToString() + "')", con);
com.ExecuteNonQuery();
con.Close();
Response.Redirect("BT2.aspx");
}
else
{
Response.Write("<script>alert('密码或用户名密码不正确!')</script>");
}
}
catch (Exception error)
{
Response.Write(error.ToString());
}
}
else
Response.Write("<script>alert('验证码错误!')</script>"); }
这是和登陆信息结合的判断验证码的代码
{
Label1.Text = "对不起,输入的验证码不正确,请重新输入!";
}
{
catch (Exception error)
{
Response.Write(error.ToString());
}
}
else
Response.Write(" <script>alert('验证码错误!') </script>"); }
{ //定义用于验证码的字符数组
char[] AllCheckCodeArray ={ '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','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 randomcode = "";
Random rd = new Random();
//生成4位验证码字符串
for (int i = 0; i < 4; i++)
randomcode += AllCheckCodeArray[rd.Next(AllCheckCodeArray.Length)];
return randomcode;
}
//生成验证码图片
protected void Page_Load(object sender, EventArgs e)
{
//定义图片的宽度
int ImageWidth = 55;
//定义图片高度
int ImageHeigh = 22;
//定义字体,用于绘制文字
Font font = new Font("Arial", 12, FontStyle.Bold);
//定义画笔,用于绘制文字
Brush brush = new SolidBrush(Color.Black);
//定义钢笔,用于绘制干扰线
Pen pen1 = new Pen(Color.FromArgb(255, 100, 100), 0);//这里也可以直接获得一个现有的color对象如:Color.Gold.我是为了美观所以定义和下面一样
Pen pen2 = new Pen(Color.FromArgb(255, 100, 100), 0);//这里根据ARGB值定义获得了一个color对象
//创建一个图像
Bitmap BitImage = new Bitmap(ImageWidth, ImageHeigh);
//从图像获取一个绘画面
Graphics graphics = Graphics.FromImage(BitImage);
//清除整个绘图画面并用颜色填充
graphics.Clear(ColorTranslator.FromHtml("#F0F0F0"));//这里从HTML代码获取color对象
//定义文字的绘制矩形区域
RectangleF rect = new RectangleF(5, 2, ImageWidth, ImageHeigh);
//定义一个随机数对象,用于绘制干扰线
Random rand = new Random();
//生成两条横向的干扰线
for (int i = 0; i < 2; i++)
{
//定义起点
Point p1 = new Point(0, rand.Next(ImageHeigh));
//定义终点
Point p2 = new Point(ImageWidth, rand.Next(ImageHeigh));
//绘制直线
graphics.DrawLine(pen1, p1, p2);
}
//生成两条纵向的干扰线
for (int i = 0; i < 2; i++)
{
//定义起点
Point p1 = new Point(rand.Next(ImageWidth), 0);
//定义终点
Point p2 = new Point(rand.Next(ImageWidth), ImageHeigh);
//绘制直线
graphics.DrawLine(pen2, p1, p2);
}
//绘制验证码文字
string codestring = CreateCheckCodeString();/////////////添加的代码
Session["codestring"] = codestring;/////////////////////
graphics.DrawString(codestring, font, brush, rect); /////////有修改
//保存图片为gif格式
BitImage.Save(Response.OutputStream, ImageFormat.Gif);
//释放对象
graphics.Dispose();
BitImage.Dispose();
}
}
完整的代码已经给你了,上面有很多/////////////的地方就是我修改过的地方,你以后可以再其他页面使用类似于:if(codestring == Session["codestring"].ToString()){ //OK代码}else{//错误代码}
就是这么简单的了