【发布时间】:2014-01-21 16:03:54
【问题描述】:
<%@ language = "VBScript"%>
<!DOCTYPE html>
<html>
<body>
<form method="post" action="">
Username:<br> <input type = "text" name = "user"/><br>
Password:<br> <input type = "password" name = "pass"/><br>
<input type = "submit" name = "register_button" value = "Register"/>
<input type = "submit" name = "submit_button" value = "Submit"/>
</form>
<%
set credentials = Server.CreateObject("Scripting.Dictionary")
set Session("credentials") = credentials
if Request.form("register_button") <> "" then
dim user
dim pass
pass = Request.form("pass")
user = Request.form("user")
Session("credentials").Add user, pass
end if
if Request.form("submit_button") <> "" then
dim userd
dim passd
passd = Request.form("pass")
userd = Request.form("user")
if Session("credentials").Exists(userd) = true then
if Session("credentials").Item(userd) = passd then
Response.Write("ACCESS GRANTED")
else
Response.Write("ACCESS DENIED")
end if
else
Response.Write("USERNAME DOES NOT EXIST")
end if
end if
%>
</body>
</html>
这是我使用经典 ASP 创建的基本登录页面。当我输入用户并通过时,然后单击注册,它将用户名和密码存储在字典中没有问题。但是,当我单击提交按钮(填写注册凭据后)时,字典的内容会以某种方式被删除。因此,它使 "if Session("credentials").Exists(userd) = true then" 语句失败。我什至尝试在不使用 Session 的情况下将“凭据”设为普通变量。它仍然不起作用,字典的内容被删除了。我怎样才能克服这个问题?提前致谢!
【问题讨论】:
-
我会重新考虑这种方法; stackoverflow.com/questions/2076165/…
-
好吧,因为我还是 ASP 的初学者,我只想将凭据存储在字典中。我想暂时避免使用数据库。话虽如此,你建议我应该采取什么方法?将凭据存储在查询字符串中有效吗?我这样做只是为了学习目的,所以它不一定是安全的。
-
会话已经像字典一样,所以我直接存储值;会话(“通过”)=“xyz”/会话(“用户”)=“鲍勃”
-
有意思,我试试
-
有效!非常感谢! :)
标签: object vbscript asp-classic session-variables