当前位置:编程学习 > C#/ASP.NET >>

关于ASP登录检测的“灵异”问题

ASP高手们好,我是一个ASP的初学者,现在在做一个小网站,遇到了一件不可思议的事情,请大家帮我找出错误原因。

是这样的,一般来说,网站有的页面(比如后台管理)是需要登录以后才可以浏览的,如果你没有登录,即使在地址栏直接输入后台管理的网址(比如http://www.baidu.com/admin.asp),你也无法正常浏览,系统会自动让你转去登录。当你登录以后,这时再在地址栏直接输入后台管理的网址,那么就可以直接浏览了。
我现在用的Session来进行判断,如果用户没有登录,直接输入后台管理的网址,就转去登录,但是登录以后,怪事就来了,这时即使在地址栏再输入后台管理的网址,还是提示说没有登录,可是明明已经登录了啊。
更奇怪的是,如果一开始就从主页登录了,然后直接输入后台管理的网址,却可以直接浏览。
这两种做法有什么差别啊?为什么一种就正常,另外一种就怎么也不行呢。我问了我的同学,他也在做网站,结果他也是这个问题,好多人都是这个问题,但是不知道怎么解决,太奇怪了,高手们可不可以帮我们一下啊,谢谢啦。 --------------------编程问答-------------------- 下面这些是我用来检测的代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<% 
response.Write trim(Cstr(session(session("pname1"))))//*我运行的时候可以正常显示为YES,但是却出现说“您还没有登录
if not session(session("pname1"))="yes" then
 response.write "您还没有登录"
else
 response.Write "您已经登录了"
end if
%>
明明已经是“yes"了啊。 --------------------编程问答-------------------- if not session(session("pname1"))="yes" then 
改成
if not session(session("pname1"))=="yes" then 
--------------------编程问答-------------------- 既然都用上asp.net了,为什么不干脆用asp.net提供的Membership来做验证?

--------------------编程问答--------------------
引用 2 楼 lude8880 的回复:
if not session(session("pname1"))="yes" then 
改成 
if not session(session("pname1"))=="yes" then 


楼主用的是asp... 用"=="会出错
我认为应该是游览器缓存的问题,登陆后如果还是未登陆的状态,你可以在页面后面加个参数就正常了
比如:
你用直接输入admin.asp,由于你没登陆,会出现提示你没登陆然后,系统自己帮你转到login.asp,你在login.asp登陆后,系统帮你转到admin.asp这时,你如果是ie7游览器,在默认的情况下,会出现提示你没登陆,就是缓存问题。

解决方法就是你转的连接你可以这么写:
response.redirect("admin.asp?t=" & now) --------------------编程问答-------------------- 缓存问题,当然代码写得也有问题。
你可以尝试在现有的页面上(手工写的)加上一句 &tmp=xxx
比如:http://xxx.xxx.xxx.aspx?id=xx&tmp=124
再看看会不会出现你所说的问题。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,