为什么我显示出来的验证码和存到session里的不同步啊?网上查了很久也没解决,求高手解惑。。
我产生验证码的是一个叫ValidNums.aspx文件,ValidNums.aspx.cs里有三个方法1. //生成随机字符串
private string CreateRanjdomNum(int NumCount)
2. //生成图片
private void CreateIamge(string validateNum)
3. //载入ValidNums.aspx页面时调用这两个方法产生验证码并把验证码字符串validateNum存入Session
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string validateNum = CreateRanjdomNum(4); //成生4位随机字符串
CreateIamge(validateNum); //将生成的随机字符串绘成图片
Session["ValidNums"] = validateNum; //保存验证码
}
}
然后我的登录页面login.aspx放验证码的地方是用image控件,ImageUrl="~/ValidNums.aspx"。
验证输入时用的是:在login.aspx.cs里
string num = txtValidNums.Text.Trim();//获取验证码信息
//判断输入的验证码是否正确
if (Session["ValidNums"].ToString() == num.ToUpper())
问题1:无论我怎样输入验证码都不对。然后我用label控件在载入login.aspx页面时就将Session里的内容显示出来时。
发现Session里的内容跟验证码那儿显示的不一样。
问题2:解决这个问题后,我该如和实现验证码的单独刷新?因为验证码是一个单独的.aspx的文件,好单独在login页面载入。
求高手指点,新手分不多。请不要怀疑我的诚意。
--------------------编程问答-------------------- 听你的描述 怀疑是页面缓存问题。你在page_load加个Response.Expires=-100;清缓存试试。我当时遇见的问题和你差不多 就是这么解决的。
<a href="#"
onclick="javascript:document.getElementById('valiCode').src='CreateCheckCode.aspx?id='+Math.random();return false;"
title="刷新验证码" >看不清,换张图片?不区分大小写。<asp:Label ID="Label1" runat="server" Text="" Visible="false" style=" color:Red;"></asp:Label>
</a>
这是我原来页面上的刷新。 --------------------编程问答-------------------- 应该是由于图片缓存造成的.建议在读取图片的链接上加一个随即生成的参数,只要这个参数每次都不一样,图片缓存问题自然就解决了. --------------------编程问答-------------------- 第一个问题我不知道 ,第二个问题 刷新好办啊 ,在img空间加个 单击事件调用方法
function changeImage()
{
document.getElementById("img").src=document.getElementById("img").src+'?';
}
重新赋值就等于刷新了验证码 --------------------编程问答-------------------- 缓存。 不是说你刷新- -
就是说 你的第一张图片的信息是被存储起来了的。
然后你去刷新请求第二张得时候 读取的是被存储的值 --------------------编程问答-------------------- 页面载入显示SESSION和显示的结果不一致是对的 因为你载入的时候SESSION存的还是上次的结果 页面加载完成后 图片刷新 SESSION更新
我按照你的过程试了一下 应该没有问题的 你可以把代码全部贴出来参考一下
刷新校验码用楼上的方法就可以 增加一个onclick事件就可以 --------------------编程问答-------------------- 事件处理的顺利 先处理 先存储。再执行的时候 提取的是上次存储的值 --------------------编程问答-------------------- 我也遇到了同样的问题,第一次访问页面的时候session里面是空值,刷新后取出来的是上次页面上面显示的验证码 --------------------编程问答-------------------- 1、具体问题你还是调试跟踪下看,你在页面上显示Label不一致一般情况下是不对的,因为你的页面加载时还是上一次的Session,而页面加载后你的img src会去调用ValidNums页面,这时Session会被更新
2、单独刷新就是用js更新img对应的Src就可以了
$('img').attr("src","ValidNums.aspx?"+ + Math.random())--------------------编程问答-------------------- if (Session["ValidNums"].ToString() == num.ToUpper())
估计是你这个错了。
补充:.NET技术 , ASP.NET