关于 SESSION 显示 前一个验证码的问题,请高手解决。

qhdfzc 2010-08-27 03:39:46

我搞了一个验证码的功能,但是发现,验证码和SESSION 的不一致,SESSION 总显示前一个验证码。请高手解决。

pic.aspx

代码如下:


public partial class ht_pic : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.CreateCheckCodeImage(GenerateCheckCode());
}
private string GenerateCheckCode()
{
int number;
char code;
string checkCode = string.Empty;

Random radom = new Random();

for (int i = 0; i < 6; i++)
{
number = radom.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));
Session["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);
System.Drawing.Graphics g = System.Drawing.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.GreenYellow), x1, y1, x2, y2);
}

Font font = new System.Drawing.Font("Verdana", 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 < 80; 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.Blue), 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();
}
}


}


在 使用验证码的页面 HTML 内 有

<img id="Image1" src="pic.aspx" style="cursor:pointer"
onclick="this.src=this.src+'?'" alt="点击重刷新" align="absmiddle"/>[点击更新]




在使用验证码的CS 文件内 有

if (TextBox3.Text.Trim ().ToUpper () != Session["CheckCode"].ToString ())
{

Response.Write ("<script lanuage=javascript>alert('验证码有误!');location='javascript:history.go(-1)'</script>");

return;
}

但是,我发现 Session["CheckCode"] 的 内容和验证码图片显示的不一样,Session["CheckCode"] 总是显示验证码图片上前一个验证码字符串.请高手解答一下。谢谢。


...全文
102 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qhdfzc 2010-08-27
  • 打赏
  • 举报
回复
高手 ,搞定了
chai1338 2010-08-27
  • 打赏
  • 举报
回复
如梦手真快 mark
wuyq11 2010-08-27
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)this.CreateCheckCodeImage(GenerateCheckCode());
}
程序说明: 欢迎使用梦想年华新闻系统。 程序基于 JSP + JavaBean 开发,数据库可以使用Access,MySql,MSSQL,Oracle数据库。 开发平台:Win2003 + Apache2.0.52 + Tomcat5.54 + Mod_jk 1.2.6 + JDK1.5 程序正常运行需要JVM(Java虚拟机)1.5以上的版本。 安装说明: 一、首先自行建好JSP服务器。单独运行或者与Apache集成都行(我用的是Tomcat + Apache)复制本程序到你服务器的根目录下,我用的Tomcat,默认路径为:Tomcat安装目录/webapps/ 目录下。保证系统的目录名为news,如果更改了系统的目录名,系统新闻里自带的图片将不能显示。如果你准备清空数据,则可以改成你想要的目录,你据实际情况修改。 二、数据库选择: 1、如果选择Access数据库,打开 WEB-INF\classes\DBConfig.property 文件,修改 DBType 的值为0(即DBType=0;这也是默认值),并修改Access数据库的路径。 2、如果选择 MySql 数据库,则先自行装MySql,并下载MYSQL 的JDBC驱动程序进行配置。 调试好JSP + MYSQL 服务器。 然后进入本新闻系统所在的目录。 在mysql 提示符下执行:\. DreamNews_MySql.sql。 修改 DBType 的值为,并设置你所使用的驱动程序。 3、如果选择 SQL Server 数据库,则先安装好SQL Server(安装时选择混合模式验证), 然后下载SQL Server 的JDBC驱动程序进行配置。 注意在Win2003 Server上安装SQLServer2000,必须安装补丁sp3。 调试好JSP + SQL Server 服务器。 在查询分析器时执行 sql/DreamNews_SQL.sql 这个 SQL角本即可。 修改 DBType 的值为2,并设置你所使用的驱动程序。 4、如果使用Oracle数据库,各位自行解决。 5、注意:选择了数据库,一定要正确设置相应数据库的驱动程序,如果不清楚,不要更改本系统 默认值。 6、不要更改程序的目录名 news ,否则程序中的图片可能无法显示。 由于时间关系,我只在Windows平台下测试用Tomcat,Resin测试过。程序能够正常运行。 用Apache以及IIS集成以上软件也能正常运行。关于Linux下的运行,各位自行调试, 有什么意见发往fanwsp@126.com。本人不甚感谢。以后我肯定会在Linux平台下测试。 由于个人精力和时间的关系,本新闻系统难免存在许多不足之处,欢迎各位高手指正。 三、程序目录结构 |-------|--------------------------------------------------- |--admin| 后台管理的目录 |-------|--------------------------------------------------- |-------|--css 后台CSS文件目录 |-------|--------------------------------------------------- |-------|--help 后台帮助系统目录 |-------|--------------------------------------------------- |-------|--images 后台的图片图片目录 |-------|--------------------------------------------------- |-------|--js 使用JS的文件目录 |-------|--------------------------------------------------- |-------|--AddNews.jsp 添加新闻 |-------|--Admin_Class.jsp 类别管理 |-------|--Admin_Config.jsp 系统参数设置 |-------|--Admin_Info.jsp 系统基本信息设置 |-------|--Admin_Left.jsp 框左部导航页面 |-------|--Admin_Main.jsp 主框架页面 |-------|--Admin_Special.jsp 专题管理 |-------|--Admin_User.jsp 用户管理 |-------|--DelNews.jsp 删除新闻 |-------|--Img.htm 上传图片页面 |-------|--index.jsp 后台登录页面 |-------|--Index_Face.html 框架右边页面 |-------|--ListNews.jsp 后台管理新闻列表页面 |-------|--Logout.jsp 退出系统页面 |-------|--Modifynews.jsp 修改新闻 |-------|--Person.jsp 管理员个人信息页面 |-------|--Session.jsp 是否登录判断遄 |-------|--VerifyCode.jsp 验证码页面 |-------|--------------------------------------------------- |--buttonimage eWebEditor编辑器工具图片目录 |-------|--------------------------------------------------- |--css CSS文件目录 |-------|--------------------------------------------------- |-------|--CoolBlue eWebEditor编辑器使用的CSS文件 |-------|--------------------------------------------------- |-------|--newscss 本系统台使用的CSS文件 |-------|--------------------------------------------------- |--dialog eWebEditor编辑器弹出窗口页面目录 |-------|--images 图片目录 |-------|--------------------------------------------------- |--include eWebEditor编辑器包含文件目录 |-------|--------------------------------------------------- |--pic 本系统图片目录 |-------|--------------------------------------------------- |--sql 本系统使用的数据库的角本文件 |-------|--------------------------------------------------- |--sysimge eWebEditor编辑器系统图片目录 |-------|--------------------------------------------------- |--UploadFile 上传图片保存的目录 |-------|--------------------------------------------------- |--WEB-INF |-------|--------------------------------------------------- |-------|--lib jar包存放的目录 |-------|--------------------------------------------------- |-------|-------|--|--dom4j.jar eWebEditor编辑器自带的类 |-------|-------|--|--DreamNews.jar 本系统所使用的类文件 |-------|-------|--|--MYSQL-Driver.jar 本系统附带的MYSQL驱动程序 |-------|-------|--|--Oracle-Driver.jar 本系统附带的Oracle驱动程序 |-------|-------|--|--MSSQL-Driver.jar 本系统附带的SQL Server驱动程序 |-------|--------------------------------------------------- |-------|--classes 类文件目录 |-------|--------------------------------------------------- |-------|-------|--src JavaBean源程序目录 |-------|-------|------------------------------------------- |-------|-------|--|--AdminClass.java 类别管理类源文件 |-------|-------|--|--Config.java 系统设置类源文件 |-------|-------|--|--DBConnection.java 数据库连接类源文件 |-------|-------|--|--Function.java 常用方法定义类源文件 |-------|-------|--|--ListClass.java 台类别显示类源文件 |-------|-------|--|--Log.java 日志类源文件 |-------|-------|--|--Login.java 用户登录类源文件 |-------|-------|--|--MD5.java MD5加密算法源文件 |-------|-------|--|--News.java 新闻管理类源文件 |-------|-------|--|--ShowNews.java 新闻显示类源文件 |-------|-------|--|--User.java 用户管理类源文件 |-------|-------|--|--VerifyCode.java 验证码类源文件 |-------|--------------------------------------------------- |-------|-------|--DBConfig.property 数据库配置文件 |-------|--------------------------------------------------- |-------|--Button.xml eWebEditor编辑器样式定义文件 |-------|--DreamNews.mdb Access数据库 |-------|--Style.xml eWebEditor编辑器样式定义文件 |-------|--web.xml 应用程序配置页面 |-------|--------------------------------------------------- |--Config.jsp 本系统配置页面 |--eWebEditor.jsp eWebEditor编辑器主页面 |--index.jsp 本系统首页 |--ReadClass.jsp 本系统大类显示页面 |--ReadSClass.jsp 本系统小类显示页面 |--Search.jsp 本系统新闻搜索页面 |--Special.jsp 本系统专题显示页面 |--Top.jsp 本系统头部公共页面 |--upload.jsp eWebEditor编辑器文件上传页面 |--说明.txt 本说明文件 |------------------------------------------------------------ 后台管理说明: 地址:admin/index.jsp 一定要输入文件名index.jsp,否则无法登录。 用户名:admin 密码:admin

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧