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


现在的问题是,会员在未登陆时打开该下载页面后弹出提示框后,登陆会员成功以后,再打开该下载页面时仍会弹出未登陆提示框。有没有解决办法????
...全文
399 点赞 收藏 37
写回复
37 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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]

告诉浏览器,不要缓存该页面
回复
加载更多回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2008-04-02 03:46
社区公告
暂无公告