在Ajax中读取session的值,怎么会有时正确,有时又不对?

bingfenghzy 2010-01-11 07:20:42
在做验证码时,创建验证码的程序成中设置了一个session值,然后在应用ajax提交数据时,后台程序获取的session值,有时候是对的,有时候又不对。不知道是什么原因?望各位帮帮忙!谢谢!
...全文
640 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
artren 2010-07-20
  • 打赏
  • 举报
回复
upupupup
theuckingday 2010-06-09
  • 打赏
  • 举报
回复
很好up
zm_hs 2010-01-12
  • 打赏
  • 举报
回复
你说的不正确的情况是什么?
antony1029 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bingfenghzy 的回复:]
问题解决了,多谢各位的热心帮助。是我自己的程序有问题:由于多个页面需要用到验证码,所以我为了方便,所有的验证码都用了同一个文件,导致里面的session的名称一样。
  所以在应用独立的验证码文件后,再改变文件中的session的名称后,问题就解决了,但为什么验证码有时正确,有时又不正确?还是不知道。希望各位讨论讨论。
[/Quote]
UP
happy664618843 2010-01-12
  • 打赏
  • 举报
回复
?&num=new Date().getTime()防止缓存
sysudzx 2010-01-12
  • 打赏
  • 举报
回复
ajax会自动创建session的,当你的session超时被释放之后,ajax请求会生成一个新的session,这时候,session里面的值当然就变化了啦
bingfenghzy 2010-01-11
  • 打赏
  • 举报
回复
问题解决了,多谢各位的热心帮助。是我自己的程序有问题:由于多个页面需要用到验证码,所以我为了方便,所有的验证码都用了同一个文件,导致里面的session的名称一样。
所以在应用独立的验证码文件后,再改变文件中的session的名称后,问题就解决了,但为什么验证码有时正确,有时又不正确?还是不知道。希望各位讨论讨论。
bingfenghzy 2010-01-11
  • 打赏
  • 举报
回复
不好意思,没看懂,麻烦能说详细一点吗?谢谢!
[Quote=引用 3 楼 lin364653705 的回复:]
AJAX生成随机数,应该在url上加了个时间戳,保证每次请求都是获得不一样的随机数!!这样应该没问题~
[/Quote]
lin364653705 2010-01-11
  • 打赏
  • 举报
回复
AJAX生成随机数,应该在url上加了个时间戳,保证每次请求都是获得不一样的随机数!!这样应该没问题~
bingfenghzy 2010-01-11
  • 打赏
  • 举报
回复
谢谢你的回答。
对于第一条:我用的是apache,php,session在有效时间是设置为直到浏览器关闭。所有应该不是这个原因。
对于第二条:我在点击验证码附近的“看不清,换一张”对验证码进行刷新后,获取的session(即验证码)是正确的)。但就是刷新整个页面时,提交的验证码会出错。所有应该也不是这个原因。

所有我想:是不是整个页面和验证码的图片的加载顺序会影响session的值,在这里验证码的图片应该是在页面其它部分的后面加载的?
[Quote=引用 1 楼 shenzhennba 的回复:]
引用楼主 bingfenghzy 的回复:
在做验证码时,创建验证码的程序成中设置了一个session值,然后在应用ajax提交数据时,后台程序获取的session值,有时候是对的,有时候又不对。不知道是什么原因?望各位帮帮忙!谢谢!

原因有:
1,session 变量在服务器上是有时效限制的,在规定有效时间内访问session变量,其值是就是同一个值,当客户端窗口在超过规定有效时间没有都没有活动一下,那么web服务器会清除该对应的session值,当超过了有效时间后又请求一次得到的肯定是不同的值了,这个规定有效时间各个web 服务器的默认值不同(IIS好象是20分钟吧),在程序中还可以设定有效时间;

2,生成验证码的顺序问题,必须是在本次比较完成后才产生下一次验证码,本次还没有比较就生成新的验证码,那肯定不可以,如果前后两次验证码相同当然可以,所以为保证不相同,在验证码生成前加一个随机函数
[/Quote]
shenzhenNBA 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 bingfenghzy 的回复:]
在做验证码时,创建验证码的程序成中设置了一个session值,然后在应用ajax提交数据时,后台程序获取的session值,有时候是对的,有时候又不对。不知道是什么原因?望各位帮帮忙!谢谢!
[/Quote]
原因有:
1,session 变量在服务器上是有时效限制的,在规定有效时间内访问session变量,其值是就是同一个值,当客户端窗口在超过规定有效时间没有都没有活动一下,那么web服务器会清除该对应的session值,当超过了有效时间后又请求一次得到的肯定是不同的值了,这个规定有效时间各个web 服务器的默认值不同(IIS好象是20分钟吧),在程序中还可以设定有效时间;

2,生成验证码的顺序问题,必须是在本次比较完成后才产生下一次验证码,本次还没有比较就生成新的验证码,那肯定不可以,如果前后两次验证码相同当然可以,所以为保证不相同,在验证码生成前加一个随机函数

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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