ASP中session问题

lb3376 2008-04-02 03:46:19
在会员登陆成功后,把会员名赋给session("username"),

在下载页面需要判断会员是否登陆,代码如下:
if session("username")="" then
response.Write "<script LANGUAGE='javascript'>alert('对不起,你还没有登录,请登录后再下载!');history.go(-1);</script>"
response.End()
end if


现在的问题是,会员在未登陆时打开该下载页面后弹出提示框后,登陆会员成功以后,再打开该下载页面时仍会弹出未登陆提示框。有没有解决办法????
...全文
451 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
szflysky123 2011-09-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 siyee 的回复:]
if session("username")=="" then
response.Write "<script LANGUAGE='javascript'>alert('对不起,你还没有登录,请登录后再下载!');history.go(-1);</script>"
response.End()
end if


注意 if session("username")=="" the……
[/Quote]


人才啊!!!
lb3376 2008-04-03
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 leisecurity 的回复:]
if not(rs_user.bof and rs_user.eof)
这样写对不,没有测试过。建议改成这样:
if not rs_user.bof and not rs_user.eof then
[/Quote]

主要问题不在这儿啊,这儿是没有问题的!
ykklv 2008-04-03
  • 打赏
  • 举报
回复
把session("username")打印出来就知道有没有赋值成功
licongying 2008-04-03
  • 打赏
  • 举报
回复
如果是 本站的下载 如 www.abc.com/123.rar 这样点 应该没问题
如果你 点的那个下载链接 是 down.abc.com/123.rar 这样可能就有问题了
leisecurity 2008-04-03
  • 打赏
  • 举报
回复
if not(rs_user.bof and rs_user.eof)
这样写对不,没有测试过。建议改成这样:
if not rs_user.bof and not rs_user.eof then
lb3376 2008-04-03
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 tangqiaojie 的回复:]
你再打开该下载页面时,是另外打开新IE窗口还是在登录的那个IE窗口打开啊?
[/Quote]

是打开新的IE窗口,有什么区别吗?
lb3376 2008-04-03
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 tangqiaojie 的回复:]
你"用response.write(session("username"))输出试过了的"是在哪个页面试啊?
是登录那个,还是下载那个?
[/Quote]

在下载页面试过,有时能输出,有时不能输出,不知道是怎么回事啊?
lb3376 2008-04-03
  • 打赏
  • 举报
回复
这是登陆时处理的主要代码:
set rs_user= server.CreateObject("ADODB.Recordset")        
sql_user="select * from [user] where user_password='"&u_password&"' and user_name='"&u_name&"' "
rs_user.open sql_user,conn,1,3

if not(rs_user.bof and rs_user.eof) then
session("username")=rs_user("user_name")
session.Timeout=60
response.Redirect(comeurl)
rs_user.close
set rs_user=nothing
response.End()
else
response.write "<script LANGUAGE='javascript'>alert('登录失败,请检查您的登录名和密码!');history.go(-1);</script>"
rs_user.close
set rs_user=nothing
response.End()
end if


不过应该是没有问题的
lb3376 2008-04-03
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 smatrix 的回复:]
在会员登陆成功后,把会员名赋给session("username")这段代码贴上来!
[/Quote]
登陆的这段代码应该是没有问题的,因为在其他页面处理时没有问题

而且,“会员在未登陆时打开该下载页面后弹出提示框后,登陆会员成功以后,再打开该下载页面时仍会弹出未登陆提示框”这种情况有时出现,有时又不出现,不知道是怎么回事???
lb3376 2008-04-03
  • 打赏
  • 举报
回复
知道了,谢谢各位
rushman 2008-04-03
  • 打赏
  • 举报
回复
再说一遍 禁用页面缓存

Response.CacheControl = "no-cache";


<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
yongfa365 2008-04-03
  • 打赏
  • 举报
回复
强烈建议看看 19楼

'找服务商,一般问题是:
'你网站所在的应用程序池下有很多站点,且占用CPU或内存高,服务商为了不影响别人使用,所以会自动回收或关闭资源,这时你的 session是失效

'解决方法:给他说一下情况,让处理下,如果他们都不知道怎么回事,让他给你网站另建个应用程序池,把你的站点放里面,呵呵
xtdenglei 2008-04-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 lb3376 的帖子:]
在会员登陆成功后,把会员名赋给session("username"),

在下载页面需要判断会员是否登陆,代码如下:

HTML codeif session("username")="" then
response.Write "<script LANGUAGE='javascript'>alert('对不起,你还没有登录,请登录后再下载!');history.go(-1);</script>"
response.End()
end if



现在的问题是,会员在未登陆时打开该下载页面后弹出提示框后,登陆会员成功以后,再打开该下载页面时仍会…
[/Quote]

你可以在判断之前先用response.write session("username")看到username有没有值。
tangqiaojie 2008-04-02
  • 打赏
  • 举报
回复
你再打开该下载页面时,是另外打开新IE窗口还是在登录的那个IE窗口打开啊?
tangqiaojie 2008-04-02
  • 打赏
  • 举报
回复
你"用response.write(session("username"))输出试过了的"是在哪个页面试啊?
是登录那个,还是下载那个?
tangqiaojie 2008-04-02
  • 打赏
  • 举报
回复
试试这样

if Cstr(session("username"))="" then
response.Write "<script LANGUAGE='javascript'>alert('对不起,你还没有登录,请登录后再下载!');history.go(-1);</script>"
response.End()
end if

baopinglee 2008-04-02
  • 打赏
  • 举报
回复
if session("username")=""||session("username")is null then
response.Write "<script LANGUAGE='javascript'>alert('对不起,你还没有登录,请登录后再下载!" & session("username") & "');history.go(-1);</script>"
response.End()
end if

这样就应该可以了
smatrix 2008-04-02
  • 打赏
  • 举报
回复
在会员登陆成功后,把会员名赋给session("username")这段代码贴上来!
yongfa365 2008-04-02
  • 打赏
  • 举报
回复

if session("username")="" then
response.Write "<script LANGUAGE='javascript'>alert('对不起,你还没有登录,请登录后再下载!" & session("username") & "');history.go(-1);</script>"
response.End()
end if

这样看一下,至少可以看到session("username")里不是不是还有内容,一般是没有。

我觉得您这情况应该是session失效了,可以找服务器提供商给您的站点换个应用程序池,您就给他说一下您的情况,应该可以解决问题,引用以前的回复:

'找服务商,一般问题是:
'你网站所在的应用程序池下有很多站点,且占用CPU或内存高,服务商为了不影响别人使用,所以会自动回收或关闭资源,这时你的 session是失效

'解决方法:给他说一下情况,让处理下,如果他们都不知道怎么回事,让他给你网站另建个应用程序池,把你的站点放里面,呵呵


万一还是不行,看看你的程序是否在本地运行正常,如果正常,肯定是服务商问题,如果不正常,您得看看您的程序是不是中途把session给清空了
rushman 2008-04-02
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 lb3376 的回复:]
Response.CacheControl = "no-cache";

这句话的作用是什么???
[/Quote]

告诉浏览器,不要缓存该页面
加载更多回复(17)

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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